超级热核速成编程安全审查 — AI助手技能
核心原则
永远不要信任客户端。 每个价格、用户ID、角色、订阅状态、功能标志以及速率限制计数器都必须在服务器端验证或强制执行。如果某个数据仅存在于浏览器、移动端捆绑包或请求体中,那么攻击者就能控制它。
其他原则——参见 core/principles.md:
- 纵深防御:永远不要依赖单一的安全控制
- 安全失败:当发生故障时,拒绝访问(默认关闭)
- 最小权限:授予完成任务所需的最小权限
- 输入验证:永远不要信任用户输入——在服务器端验证所有内容
- 输出编码:根据渲染上下文对数据进行编码
操作模式
模式 1:审计(后验分析)
通过以下指令触发:“运行安全审计”、“检查这个是否存在漏洞”、“速成安全审计”、“这个安全吗?”或任何明确要求审查现有代码的请求。
流程:
- 检测技术栈(参见下面的步骤1)
- 运行50点检查清单——参见
core/audit-process.md - 计算分数并编译报告——参见
core/output-format.md - 根据需要加载相关漏洞参考文献和栈模块
模式 2:预防(代码生成期间)
在编写或审查涉及认证、支付、数据库访问、API密钥、机密信息、用户数据或文件上传的代码时自动触发——即使没有用户提及安全。
流程:
- 识别正在编写的代码适用的安全领域
- 在生成代码前,先查阅相关的参考文件
- 从一开始就应用安全模式
- 在非显而易见的实现处添加内联注释,解释安全决策
- 向用户标记任何安全权衡
步骤 1:检测技术栈
通过检查以下文件来识别项目的技术:
| 检测项 | 查找内容 |
|---|---|
| 框架 | next.config.*, nuxt.config.*, astro.config.*, vite.config.*, angular.json, svelte.config.* |
| 包管理器 | package.json, requirements.txt, go.mod, Gemfile, Cargo.toml, pubspec.yaml |
| 数据库 | prisma/, drizzle.config.*, supabase/, firebase.json, convex/ |
| 认证 | 导入语句:@clerk, next-auth, @supabase/auth, @auth0, lucia, passport, firebase/auth |
| 存储 | 导入语句:@aws-sdk/client-s3, @supabase/storage, @google-cloud/storage |
| AI API | 导入语句:openai, @anthropic-ai/sdk, @google/generative-ai, langchain, @ai-sdk |
| 支付 | 导入语句:stripe, @paddle/paddle-node, @lemonsqueezy |
| 电子邮件 | 导入语句:resend, @sendgrid/mail, nodemailer |
| GraphQL | schema.graphql, 导入语句:@apollo/server, graphql-yoga, type-graphql |
| 移动端 | app.json (Expo), react-native.config.js, capacitor.config.* |
| 部署 | vercel.json, netlify.toml, fly.toml, Dockerfile, docker-compose.*, .github/workflows/ |
| 边缘运行时 | wrangler.toml, 源代码中的边缘运行时指令 |
跳过不适用于已检测栈的检查项。
步骤 2:运行审计
加载相关的检查清单文件并执行:
审计进度:
- [ ] 步骤 1:检测技术栈
- [ ] 步骤 2a:运行关键检查 (1-15) —— 参见 checklists/critical-15.md
- [ ] 步骤 2b:运行标准检查 (16-40) —— 参见 checklists/standard-25.md
- [ ] 步骤 2c:运行生产检查 (41-50) —— 参见 checklists/production-10.md
- [ ] 步骤 3:计算分数并编译报告 —— 参见 core/output-format.md
首先运行关键检查 —— 阅读 checklists/critical-15.md 并在继续之前执行所有检查。
对于每个检查,查阅相关的参考文件:
- 漏洞详情 →
vulnerabilities/*.md - 特定栈模式 →
stack/*.md - 生产就绪 →
production/*.md
严重性等级
| 分数 | 等级 | 所需操作 |
|---|---|---|
| 10/10 | 严重 | 部署前修复 |
| 8-9/10 | 高危 | 24小时内修复 |
| 6-7/10 | 中危 | 1周内修复 |
| 4-5/10 | 低危 | 方便时修复 |
| 1-3/10 | 信息性 | 考虑解决 |
项目分数 = 100 减去所有发现问题的严重性分数之和(最低为 0)。
| 分数 | 评级 |
|---|---|
| 90-100 | ✅ 优秀 |
| 70-89 | ⚠️ 良好 — 微小问题 |
| 50-69 | 🟡 一般 — 需要关注 |
| 30-49 | 🟠 较差 — 显著风险 |
| 0-29 | 🔴 严重 — 请勿部署 |
步骤 3:输出报告
使用 core/output-format.md 中定义的格式。关键要求:
- 引用确切的文件和行号
- 显示每个发现项匹配了哪种模式
- 为每个问题提供修复前后的代码差异对比
- 包含“快速修复”部分(可在10分钟内修复)
- 以优先摘要结尾
参考文献索引
核心
core/principles.md— 安全原则和纵深防御策略core/audit-process.md— 50点检查清单的路由和执行顺序core/output-format.md— 带评分系统的报告模板
漏洞知识库
vulnerabilities/injection.md— SQL注入、XSS、命令注入、LDAP注入vulnerabilities/access-control.md— IDOR、权限提升、批量赋值vulnerabilities/authentication.md— JWT、OAuth 2.0、PKCE、会话管理、密码安全vulnerabilities/csrf-ssrf.md— CSRF、SSRF、开放重定向(附有绕过技术表格)vulnerabilities/file-upload.md— 魔数、多语言文件、ZIP Slip、SVG XSSvulnerabilities/cryptography.md— 加密、哈希、密钥管理、nonce重用vulnerabilities/race-conditions.md— TOCTOU、双花、互斥锁模式
特定栈模块
stack/supabase.md— RLS策略、认证、存储、边缘函数stack/firebase.md— 安全规则、Firestore、认证stack/nextjs.md— 服务器操作、中间件、路由处理器、App Routerstack/stripe-payments.md— Webhook、价格验证、订阅流程stack/react-native.md— 安全存储、API代理、深层链接stack/ai-llm.md— API密钥保护、提示注入、使用上限、输出清理stack/graphql.md— 内省、深度限制、批处理、持久化查询stack/docker-cicd.md— 容器安全、流水线加固
生产就绪
production/security-headers.md— CSP、HSTS、X-Frame-Options、Permissions-Policyproduction/deployment.md— 源码映射、环境分离、调试端点production/compliance.md— GDPR、CCPA、账户删除、数据保留production/observability.md— 日志安全、PII清理、监控production/dependency-audit.md— 幽灵包、域名抢注、供应链攻击
可执行检查清单
checklists/critical-15.md— 15项关键检查(部署前修复)checklists/standard-25.md— 25项标准检查(1周内修复)checklists/production-10.md— 10项生产就绪检查(上线前)
生成代码时
这些规则主动适用。在编写涉及认证、支付、数据库访问、API密钥或用户数据的代码之前,请查阅相关的参考文件,以避免一开始就引入漏洞。预防永远优于检测。
如有疑问,请选择更严格/更安全的选项,并在注释中记录安全考虑。