☰ 분류

SaaS 보안 감사 프롬프트

Next.js·Django·PostgreSQL 기반 멀티테넌트 SaaS 정보를 넣으면 OWASP Top 10, 테넌트 격리, 인증, Django 배포 설정을 감사합니다.

분류개발 › 코딩
태그검토분석개발자체크리스트
프롬프트 (영어 본문 · 답은 한국어로 옵니다)
title: SaaS Dashboard Security Audit - Knowledge-Anchored Backend Prompt
domain: backend
anchors:
  - OWASP Top 10 (2021)
  - OAuth 2.0 / OIDC
  - REST Constraints (Fielding)
  - Security Misconfiguration (OWASP A05)
validation: PASS

role: >
  You are a senior application security engineer specializing in web
  application penetration testing and secure code review. You have deep
  expertise in OWASP methodologies, Django/DRF security hardening,
  and SaaS multi-tenancy isolation patterns.

context:
  application: SaaS analytics dashboard serving multi-tenant user data
  stack:
    frontend: Next.js App Router
    backend: Django + DRF
    database: PostgreSQL on Neon
    deployment: Vercel (frontend) + Railway (backend)
  authentication: OAuth 2.0 / session-based
  scope: >
    Dashboard displays user metrics, revenue (MRR/ARR/ARPU),
    and usage statistics. Each tenant MUST only see their own data.

instructions:
  - step: 1
    task: OWASP Top 10 systematic audit
    detail: >
      Audit against OWASP Top 10 (2021) categories systematically.
      For each category (A01 through A10), evaluate whether the
      application is exposed and document findings with severity
      (Critical/High/Medium/Low/Info).

  - step: 2
    task: Tenant isolation verification
    detail: >
      Verify tenant isolation at every layer per OWASP A01 (Broken
      Access Control): check that Django querysets are filtered by
      tenant at the model manager level, not at the view level.
      Confirm no cross-tenant data leakage is possible via API
      parameter manipulation (IDOR).

  - step: 3
    task: Authentication flow review
    detail: >
      Review authentication flow against OAuth 2.0 best practices:
      verify PKCE is enforced for public clients, tokens have
      appropriate expiry (access: 15min, refresh: 7d), refresh
      token rotation is implemented, and logout invalidates
      server-side sessions.

  - step: 4
    task: Django deployment hardening
    detail: >
      Check Django deployment hardening per OWASP A05 (Security
      Misconfiguration): run python manage.py check --deploy
      and verify DEBUG=False, SECURE_SSL_REDIRECT=True,
      SECURE_HSTS_SECONDS >= 31536000, SESSION_COOKIE_SECURE=True,
      CSRF_COOKIE_SECURE=True, ALLOWED_HOSTS is restrictive.

  - step: 5
    task: Input validation and injection surfaces
    detail: >
      Evaluate input validation and injection surfaces per OWASP A03:
      check all DRF serializer fields have explicit validation,
      raw SQL queries use parameterized statements, and any
      user-supplied filter parameters are whitelisted.

  - step: 6
    task: Rate limiting and abuse prevention
    detail: >
      Review API rate limiting and abuse prevention: verify
      DRF throttling is configured per-user and per-endpoint,
      authentication endpoints have stricter limits (5/min),
      and expensive dashboard queries have query cost guards.

  - step: 7
    task: Secrets management
    detail: >
      Assess secrets management: verify no hardcoded credentials
      in codebase, .env files are gitignored, production secrets
      are injected via Railway/Vercel environment variables,
      and API keys use scoped permissions.

constraints:
  must:
    - Check every OWASP Top 10 (2021) category, skip none
    - Verify tenant isolation with concrete test scenarios (e.g., user A requests /api/metrics/?tenant_id=B)
    - Provide severity rating per finding (Critical/High/Medium/Low)
    - Include remediation recommendation for each finding
  never:
    - Assume security by obscurity is sufficient
    - Skip authentication/authorization checks on internal endpoints
  always:
    - Check for missing Content-Security-Policy, X-Frame-Options, and Strict-Transport-Security headers

output_format:
  sections:
    - name: Executive Summary
      detail: 2-3 sentences on overall risk posture
    - name: Findings Table
      columns: ["#", "OWASP Category", "Finding", "Severity", "Status"]
    - name: Detailed Findings
      per_issue:
        - Description
        - Affected component (file/endpoint)
        - Proof of concept or test scenario
        - Remediation with code example
    - name: Deployment Checklist
      detail: pass/fail for each Django security setting
    - name: Recommended Next Steps
      detail: prioritized by severity

success_criteria:
  - All 10 OWASP categories evaluated with explicit pass/fail
  - Tenant isolation verified with at least 3 concrete test scenarios
  - Django deployment checklist has zero FAIL items
  - Every Critical/High finding has a code-level remediation
  - Report is actionable by a solo developer without external tools

어떤 프롬프트인가

SaaS 대시보드 백엔드의 보안 리뷰를 체계화할 때 쓰인다. OWASP 2021, OAuth, 테넌트별 쿼리 필터링, Django 배포 하드닝을 심각도와 함께 점검한다.

같은 분류의 프롬프트

방산 CV 12개월 로드맵 프롬프트
2046 퍼즐 게임 제작 프롬프트
React 컴포넌트 통합 프롬프트
3D 아바타 팩토리 요구 프롬프트
3D FPS 게임 개발 프롬프트