首页 全部提示词 Vibe Coding

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

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

图像 @caksan 2,670 字符 在 prompts.chat 查看 译文有问题?

这是一条图像生成类提示词。这类提示词的关键词往往本身就是 「咒语」,翻译后出图/出片结果可能和原版不同——建议优先使用英文原文。

中文译文

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),评估应用 是否存在暴露风险,并记录发现结果及其严重程度 (严重/高/中/低/信息)。

  • step: 2 task: 租户隔离验证 detail: > 按照 OWASP A01(失效的访问控制)在每一层 验证租户隔离:检查 Django queryset 是否在 模型管理器层面按租户过滤,而非在视图层面。 确认无法通过 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 serializer 字段都有显式验证、 原始 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 部署检查清单中没有任何 FAIL 项
  • 每个严重/高危发现项都有代码级修复方案
  • 报告可由独立开发者执行,无需外部工具

English original

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