Security Review 是一个安全审计技能,目标是确保所有代码遵循安全最佳实践并识别潜在漏洞。
用途与激活场景
该技能在以下场景中激活使用:实现身份认证或授权;处理用户输入或文件上传;创建新的 API 端点;处理密钥或凭据;实现支付功能;存储或传输敏感数据;集成第三方 API。
主要能力:安全检查清单
技能提供了一份覆盖十个方面的安全检查清单,每项均包含错误做法与正确做法的代码示例以及验证步骤。
-
密钥管理:禁止硬编码 API 密钥、令牌或密码,所有密钥应放在环境变量中,.env.local 应加入 .gitignore,git 历史中不得包含密钥,生产密钥应存放在托管平台(Vercel、Railway)。
-
输入验证:使用 zod 等定义验证 schema,在处理前验证用户输入;文件上传需校验大小(示例为最大 5MB)、类型(如 image/jpeg、image/png、image/gif)和扩展名(如 .jpg、.jpeg、.png、.gif);采用白名单验证而非黑名单;错误信息不得泄露敏感信息。
-
SQL 注入防护:禁止拼接 SQL 字符串,应使用参数化查询(示例包括 Supabase 查询构建器与原始 SQL 参数化写法)。
-
认证与授权:令牌应存储在 httpOnly cookie 中而非 localStorage;敏感操作前必须进行授权检查(示例为管理员角色校验);Supabase 中应启用行级安全(RLS)并创建策略;实施基于角色的访问控制;会话管理需安全。
-
XSS 防护:使用 DOMPurify 等对用户提供的 HTML 进行净化,限制允许的标签与属性;配置内容安全策略(CSP)响应头;不渲染未验证的动态内容;利用 React 内置的 XSS 防护。
-
CSRF 防护:在改变状态的操作上校验 CSRF 令牌;cookie 设置 SameSite=Strict;实现双提交 cookie 模式。
-
速率限制:对所有 API 端点启用速率限制(示例为 15 分钟 100 次请求);对昂贵操作(如搜索)设置更严格的限制(示例为 1 分钟 10 次请求);支持基于 IP 与基于已认证用户的限流。
-
敏感数据暴露:日志中不得记录密码、令牌或密钥,需对敏感数据脱敏(如仅记录卡号后四位);面向用户的错误信息应通用化,详细错误仅记录在服务器日志中,不向用户暴露堆栈跟踪。
-
区块链安全(Solana):验证钱包签名;校验交易详情(收款方、金额、余额);禁止盲目签名交易。
-
依赖安全:定期运行 npm audit、npm audit fix、npm update、npm outdated;提交 lock 文件;在 CI/CD 中使用 npm ci 以保证可复现构建;启用 Dependabot;定期进行安全更新。
使用方式
技能以检查清单与代码示例的形式提供指导,并附带自动化安全测试示例,涵盖认证测试(期望 401)、授权测试(期望 403)、输入验证测试(期望 400)和速率限制测试(期望出现 429)。此外还提供部署前安全检查清单,涵盖密钥、输入验证、SQL 注入、XSS、CSRF、认证、授权、速率限制、HTTPS、安全响应头、错误处理、日志、依赖、行级安全、CORS、文件上传、钱包签名等检查项。
适用场景
适用于需要在开发过程中进行安全审计与漏洞识别的项目,尤其是涉及认证授权、用户输入处理、API 端点、密钥凭据、支付、敏感数据、第三方 API 集成以及 Solana 区块链交互的场景。
限制
资料未提供该技能的具体安装命令、运行环境要求、支持的编程语言范围、收费或价格信息、平台限制以及实际效果数据,这些内容暂未提供。