跳转到主要内容

为什么需要安全优先的流程

通用代码审查捕获风格和 bug。但安全漏洞 — SQL 注入、硬编码密钥、不安全的认证模式 — 需要专门的规则,将发现视为关键阻断。 此 cookbook 在现有审查之上设置安全优先层。

步骤 1 — 启用安全分析

确保安全分析已启用:
reviewOptions:
  security: true
这提供 Kodus 的内置安全检查。以下规则在此基础上添加团队的特定安全策略。

步骤 2 — 创建 OWASP 专项规则

SQL 注入防护

名称:禁止原始 SQL 查询
范围:文件
路径:**/*.ts, **/*.js, **/*.py
严重性:严重
说明:
  标记任何使用字符串拼接或模板字面量构建 SQL 查询的情况。
  查找模式如:
  - `query("SELECT ... " + variable)`
  - `query(\`SELECT ... ${variable}\`)`
  - `execute(f"SELECT ... {variable}")`
  必须使用参数化查询或 ORM。

硬编码密钥检测

名称:禁止硬编码密钥或凭据
范围:文件
路径:**/*
严重性:严重
说明:
  标记 fileDiff 中看起来像 API 密钥、密码、令牌或密钥的任何字符串。
  需要捕获的模式:
  - 名为 *_KEY、*_SECRET、*_TOKEN、*_PASSWORD 且赋值为字符串字面量的变量
  - 匹配 "sk_live_"、"ghp_"、"AKIA"、"Bearer " 后跟长字符串的模式
  - 包含嵌入密码的连接字符串
  密钥必须来自环境变量或保管库。

认证绕过

名称:不得跳过认证中间件
范围:拉取请求
严重性:严重
说明:
  检查 pr_files_diff 中是否有任何处理用户数据但没有认证中间件的路由或控制器。
  查找:
  - 没有 @UseGuards、@Authenticated 或等效装饰器的新路由
  - 中间件绕过模式如 skipAuth: true
  - 访问用户特定数据的公共端点
  参考 @file:src/shared/auth/guards/ 了解批准的认证模式。

XSS 防护

名称:禁止未经清理的 dangerouslySetInnerHTML
范围:文件
路径:**/*.tsx, **/*.jsx
严重性:严重
说明:
  标记 fileDiff 中任何使用 dangerouslySetInnerHTML 的情况。
  如果使用,验证输入是否已使用 DOMPurify 或等效库进行清理。
  未清理的 HTML 注入是严重的 XSS 漏洞。

步骤 3 — 教授安全记忆

创建适用于所有地方的持久约定:
@kody remember: all user input must be validated and sanitized
before use. Never trust client-side data.
@kody remember: all API endpoints that handle sensitive data
must use HTTPS only and include rate limiting.
@kody remember: error messages must never expose stack traces,
internal paths, or database details to the client.

步骤 4 — 配置零容忍

对于安全规则,您希望关键发现能够阻断:
  1. 在 PR 工作流设置中启用请求更改,使 Kody 在发现严重问题时请求更改
  2. 将安全规则设置为严重级别,使它们始终高于任何严重性过滤器
  3. 不要设置低的 maxSuggestions 限制 — 安全发现永远不应被抑制

步骤 5 — 添加依赖审计规则(可选)

如果您使用 MCP 插件,可以检查依赖项:
名称:禁止已知漏洞的依赖项
范围:拉取请求
严重性:严重
说明:
  如果 pr_files_diff 修改了 package.json、requirements.txt
  或任何依赖文件,使用 @MCP 检查添加或更新的包中是否存在
  已知漏洞。标记任何具有已知严重 CVE 的依赖项。

检查清单

  • reviewOptions 中启用安全分析
  • SQL 注入规则覆盖所有数据库交互代码
  • 密钥检测规则覆盖所有文件类型
  • 认证绕过规则引用实际的认证模式
  • XSS 规则覆盖所有前端组件文件
  • 安全记忆教授一般安全编码原则
  • 为严重发现启用请求更改
  • 测试 PR 确认规则正确触发
有关配置规则的更多信息,请参阅 Kody 规则