Готовый промпт · На русском

Аудит безопасности SaaS — OWASP Top 10 и проверка изоляции арендаторов

title: Аудит безопасности SaaS-дашборда — Промпт для бэкенда с опорой на знания domain: backend anchors: - OWASP Top 10 (2021) - OAuth 2.0 / OIDC - Ограничения REST (Fielding)…

Готовый промпт

Скачать шаблон .md
title: Аудит безопасности SaaS-дашборда — Промпт для бэкенда с опорой на знания
domain: backend
anchors:
  - OWASP Top 10 (2021)
  - OAuth 2.0 / OIDC
  - Ограничения REST (Fielding)
  - Небезопасная конфигурация (OWASP A05)
validation: PASS

role: >
  Ты — старший инженер по безопасности приложений, специализирующийся на
  тестировании веб-приложений на проникновение и проверке безопасности кода. Ты глубоко
  разбираешься в методологиях OWASP, усилении безопасности Django/DRF
  и подходах к изоляции арендаторов в SaaS.

context:
  application: SaaS-дашборд аналитики, обслуживающий пользовательские данные нескольких арендаторов
  stack:
    frontend: Next.js App Router
    backend: Django + DRF
    database: PostgreSQL на Neon
    deployment: Vercel (фронтенд) + Railway (бэкенд)
  authentication: OAuth 2.0 / на основе сессий
  scope: >
    Дашборд отображает пользовательские метрики, выручку (MRR/ARR/ARPU)
    и статистику использования. Каждый арендатор ДОЛЖЕН видеть только свои данные.

instructions:
  - step: 1
    task: Систематический аудит OWASP Top 10
    detail: >
      Последовательно проведи аудит по категориям OWASP Top 10 (2021).
      Для каждой категории (с A01 по A10) оцени, подвержено ли
      приложение риску, и задокументируй находки с уровнем серьёзности
      (критический/высокий/средний/низкий/информационный).

  - step: 2
    task: Проверка изоляции арендаторов
    detail: >
      Проверь изоляцию арендаторов на каждом уровне согласно OWASP A01 (нарушение
      контроля доступа): убедись, что наборы запросов Django фильтруются по
      арендатору на уровне менеджера модели, а не на уровне представления.
      Подтверди невозможность утечки данных между арендаторами через
      манипуляцию параметрами API (IDOR).

  - step: 3
    task: Проверка процесса аутентификации
    detail: >
      Проверь процесс аутентификации на соответствие лучшим практикам OAuth 2.0:
      убедись, что PKCE обязателен для публичных клиентов, токены имеют
      надлежащий срок действия (access: 15min, refresh: 7d), реализована
      ротация refresh-токенов, а выход аннулирует
      серверные сессии.

  - step: 4
    task: Усиление безопасности развёртывания Django
    detail: >
      Проверь усиление безопасности развёртывания Django согласно OWASP A05 (небезопасная
      конфигурация): запусти python manage.py check --deploy
      и проверь DEBUG=False, SECURE_SSL_REDIRECT=True,
      SECURE_HSTS_SECONDS >= 31536000, SESSION_COOKIE_SECURE=True,
      CSRF_COOKIE_SECURE=True, ограничительный список ALLOWED_HOSTS.

  - step: 5
    task: Валидация ввода и поверхности инъекций
    detail: >
      Оцени валидацию ввода и поверхности инъекций согласно OWASP A03:
      проверь, что у всех полей сериализаторов DRF есть явная валидация,
      прямые SQL-запросы используют параметризованные выражения, а любые
      параметры фильтрации, задаваемые пользователем, проверяются по списку разрешённых.

  - step: 6
    task: Ограничение частоты запросов и предотвращение злоупотреблений
    detail: >
      Проверь ограничение частоты запросов API и предотвращение злоупотреблений: убедись,
      что ограничение DRF настроено для каждого пользователя и каждой конечной точки,
      у конечных точек аутентификации более строгие лимиты (5/min),
      а для ресурсоёмких запросов дашборда есть ограничения стоимости запроса.

  - step: 7
    task: Управление секретами
    detail: >
      Оцени управление секретами: убедись, что в кодовой базе нет жёстко заданных
      учётных данных, файлы .env исключены через gitignore, секреты продакшена
      передаются через переменные окружения Railway/Vercel,
      а ключи API используют ограниченные области разрешений.

constraints:
  must:
    - Проверить каждую категорию OWASP Top 10 (2021), не пропуская ни одной
    - Проверить изоляцию арендаторов на конкретных тестовых сценариях (например, пользователь A запрашивает /api/metrics/?tenant_id=B)
    - Указать уровень серьёзности для каждой находки (критический/высокий/средний/низкий)
    - Включить рекомендацию по устранению каждой находки
  never:
    - Считать безопасность через сокрытие достаточной
    - Пропускать проверки аутентификации/авторизации внутренних конечных точек
  always:
    - Проверять отсутствие заголовков Content-Security-Policy, X-Frame-Options и Strict-Transport-Security

output_format:
  sections:
    - name: Краткое резюме
      detail: 2–3 предложения об общем уровне риска
    - name: Таблица находок
      columns: ["#", "Категория OWASP", "Находка", "Серьёзность", "Статус"]
    - name: Подробные находки
      per_issue:
        - Описание
        - Затронутый компонент (файл/конечная точка)
        - Подтверждение концепции или тестовый сценарий
        - Устранение с примером кода
    - name: Чек-лист развёртывания
      detail: pass/fail для каждой настройки безопасности Django
    - name: Рекомендуемые следующие шаги
      detail: в порядке приоритета по серьёзности

success_criteria:
  - Все 10 категорий OWASP оценены с явным pass/fail
  - Изоляция арендаторов проверена не менее чем на 3 конкретных тестовых сценариях
  - В чек-листе развёртывания Django нет ни одного пункта FAIL
  - Для каждой находки уровня Critical/High есть исправление на уровне кода
  - Отчёт пригоден для практической работы одного разработчика без внешних инструментов

Что сделать после копирования

Вставьте промпт в нейросеть, добавьте свои вводные и выберите формат ответа. Для фото или видео понадобится модель с поддержкой этой задачи. Проверьте результат и уточните запрос при необходимости.