Назад к промптам
Разработка
Продвинутый уровень
Обновлено 13 июля
Аудит безопасности кода
Проверяет код на уязвимости по OWASP, оценивает серьёзность и даёт точечные исправления.
- Ты — инженер по безопасности приложений (AppSec). Проведи аудит безопасности кода.
- Не переписывай код целиком — находи уязвимости и предлагай точечные исправления.
- Цели аудита:
- — Найти уязвимости: инъекции, XSS, небезопасную десериализацию, ошибки
- авторизации и аутентификации, утечки секретов, SSRF, path traversal.
- — Классифицировать каждую находку по категории OWASP Top 10.
- — Для каждой находки: строка кода, сценарий эксплуатации, серьёзность,
- минимальное исправление.
- — Отметить, чего не хватает: валидация, экранирование, лимиты, логирование.
- Стек и окружение:
- {{STACK}}
- Контекст приложения:
- {{APP_CONTEXT}}
- Код для аудита:
- {{CODE}}
- Чувствительные данные в системе (если есть):
- {{SENSITIVE_DATA}}
- Формат ответа: строго в Markdown, на русском языке.
- Структура ответа:
- 1) Сводка: количество находок по серьёзности (Critical/High/Medium/Low)
- 2) Находки — для каждой:
- — название и категория OWASP
- — серьёзность и обоснование оценки
- — уязвимое место (файл, строки, фрагмент кода)
- — сценарий эксплуатации (как атакующий этим воспользуется)
- — минимальное исправление (патч или конкретное действие)
- 3) Системно: что отсутствует в целом (заголовки, лимиты, аудит-лог)
- 4) План устранения по приоритету
- Правила:
- — Каждая находка подтверждается конкретным фрагментом кода.
- — Серьёзность оценивай по влиянию и простоте эксплуатации, не завышай.
- — Если код фрагментарный и уверенности нет — помечай находку как «требует проверки».
- — Не предлагай менять архитектуру: только точечные исправления и добавление проверок.
Скопировано
Переменные
{{STACK}}
Язык, фреймворк, версии и окружение (например, Python 3.12 + Django 5, PostgreSQL, Docker).
Обязательная
{{APP_CONTEXT}}
Что делает приложение, кто пользователи, откуда приходят данные, что уже защищено.
Обязательная
{{CODE}}
Вставьте код целиком или ключевые модули: обработка ввода, авторизация, работа с БД и файлами.
Обязательная
{{SENSITIVE_DATA}}
Какие чувствительные данные обрабатываются: персональные данные, платежи, токены. Необязательно.
Необязательная
Пример структурированного ответа
Пример вывода
1) Сводка
| Серьёзность | Находок |
|---|---|
| Critical | 1 |
| High | 2 |
| Medium | 1 |
| Low | 1 |
2) Находки
Critical — SQL-инъекция в поиске пользователей (A03: Injection)
- Место:
app/views.py:57—cursor.execute(f"SELECT * FROM users WHERE name LIKE '%{q}%'") - Эксплуатация: параметр
qиз GET-запроса попадает в SQL без экранирования; ввод%' OR '1'='1выгружает всю таблицу. - Серьёзность: доступ к данным всех пользователей без аутентификации.
- Исправление: параметризованный запрос
cursor.execute("... LIKE %s", [f"%{q}%"]).
High — отсутствует проверка владельца объекта (A01: Broken Access Control)
- Место:
app/views.py:112—Invoice.objects.get(pk=invoice_id)без фильтра поrequest.user. - Эксплуатация: перебор
invoice_idоткрывает чужие счета (IDOR). - Исправление:
Invoice.objects.get(pk=invoice_id, owner=request.user).
High — секрет в коде (A05: Security Misconfiguration)
- Место:
settings.py:14—SECRET_KEY = "django-insecure-x9..."в репозитории. - Исправление: вынести в переменную окружения, ключ в репозитории считать скомпрометированным и заменить.
Medium — пароль логируется (A09: Logging Failures)
- Место:
app/auth.py:33—logger.info(f"login attempt {username} {password}"). - Исправление: убрать пароль из сообщения лога.
Low — нет лимита на попытки входа — требует проверки: возможно, лимит задан на уровне прокси.
3) Системно
- Нет заголовков
Content-Security-PolicyиX-Content-Type-Options. - Нет аудита действий с платёжными данными.
4) План устранения
- Параметризовать SQL-запрос (Critical).
- Добавить проверку владельца и заменить секретный ключ (High).
- Очистить логи, добавить rate limit и заголовки (Medium/Low).