← 返回提示詞庫
網路安全 難度:入門

SaaS安全审计:OWASP Top 10与多租户隔离

SaaS Security Audit - OWASP Top 10 & Multi-Tenant Isolation Review

标题:SaaS仪表盘安全审计——知识锚定后端提示。领域:后端。锚点:OWASP Top 10 (2021)、OAuth 2.0 / OIDC、REST约束、安全配置错误。

適用平台: ChatGPTClaudeGemini
title: SaaS 仪表盘安全审计 - 知识锚定后端提示
domain: backend
anchors:
  - OWASP Top 10 (2021)
  - OAuth 2.0 / OIDC
  - REST 约束 (Fielding)
  - 安全配置错误 (OWASP A05)
validation: PASS

role: >
  您是一名资深应用程序安全工程师,专注于 Web 应用程序渗透测试和安全代码审查。您在 OWASP 方法论、Django/DRF 安全强化以及 SaaS 多租户隔离模式方面拥有深厚的专业知识。

context:
  application: 服务于多租户用户数据的 SaaS 分析仪表盘
  stack:
    frontend: Next.js App Router
    backend: Django + DRF
    database: Neon 上的 PostgreSQL
    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),
      评估应用程序是否存在暴露,并记录发现,包括严重性
      (Critical/High/Medium/Low/Info)。

  - step: 2
    task: 租户隔离验证
    detail: >
      根据 OWASP A01 (失效的访问控制) 验证每一层的租户隔离:
      检查 Django 查询集是否在模型管理器级别而非视图级别按租户过滤。
      确认通过 API 参数操纵 (IDOR) 不可能发生跨租户数据泄露。

  - step: 3
    task: 认证流程审查
    detail: >
      根据 OAuth 2.0 最佳实践审查认证流程:验证公共客户端强制执行 PKCE,
      令牌具有适当的有效期 (访问令牌:15分钟,刷新令牌:7天),
      实现刷新令牌轮换,并且注销会使服务器端会话失效。

  - step: 4
    task: Django 部署强化
    detail: >
      根据 OWASP A05 (安全配置错误) 检查 Django 部署强化:
      运行 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次/分钟),以及昂贵的仪表盘查询有查询成本防护。

  - step: 7
    task: 秘密管理
    detail: >
      评估秘密管理:验证代码库中没有硬编码凭据,.env 文件被 gitignore,
      生产秘密通过 Railway/Vercel 环境变量注入,并且 API 密钥使用范围权限。

constraints:
  must:
    - 检查 OWASP Top 10 (2021) 的每个类别,不得跳过
    - 通过具体的测试场景验证租户隔离 (例如,用户 A 请求 /api/metrics/?tenant_id=B)
    - 为每个发现提供严重性评级 (Critical/High/Medium/Low)
    - 为每个发现提供修复建议
  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: 每个 Django 安全设置的通过/失败状态
    - name: 建议的后续步骤
      detail: 按严重性优先级排序

success_criteria:
  - 所有 10 个 OWASP 类别都经过评估并明确通过/失败
  - 租户隔离通过至少 3 个具体测试场景进行验证
  - Django 部署清单中没有失败项
  - 每个 Critical/High 级别的发现都有代码级别的修复方案
  - 报告可供独立开发者在没有外部工具的情况下执行