关于 security-review-process
security-review-process 是用于在代码变更期间审查安全风险并验证缓解措施的技能,涵盖输入处理、注入风险、密钥与日志,以及依赖漏洞。
主要功能
- 01审查并允许列表化不可信输入
- 02检查 SQL 和 Shell 注入风险
- 03避免密钥进入代码和日志
- 04使用 bundle-audit 扫描依赖
- 05报告问题并验证缓解措施
适用场景
- 01审查 API 或 Webhook 的输入处理
- 02检查数据库和命令执行路径
- 03排查日志及配置中的密钥泄露
- 04在完成变更前评估依赖漏洞
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ igmarin/ ruby-core-skills --skill security-review-process安装后在 Claude Code 中输入/security-review-process确认已加载。
详细介绍
安全审查流程
执行此流程前,请遵循执行约定。
安全关卡与速查
| 区域 | 关卡 |
|---|---|
| 输入验证 | 不可信载荷必须先通过允许列表筛选,再进行处理 |
| 密钥 | 严禁提交或记录任何密钥 |
| 注入 | 禁止直接插入 SQL(#{id}) |
| 依赖项 | 完成更改前运行 bundle-audit |
流程步骤
步骤 1:输入验证审计
- 找出所有入口点(控制器、API 端点、Webhook、控制台运行器)。
- 确认每个参数都经过明确的允许列表筛选,并在必要时进行类型转换。
- 确保丢弃或中和 JSON 载荷中类似指令的键(例如
prompt、instructions)。
步骤 2:注入检查
- 审计所有数据库交互:
- 确认没有通过字符串插值(
#{})构建原始 SQL 字符串。 - 确认使用数据库客户端的查询参数化功能。
- 确认没有通过字符串插值(
- 审计文件和命令执行:
- 避免通过反引号、
system()或exec()执行动态 Shell 命令。如有必要,请将参数作为独立数组项传入。
- 避免通过反引号、
步骤 3:密钥和日志检查
- 从环境变量(
ENV['SECRET'])或安全配置保管库读取配置,切勿使用原始字面值。 - 确认敏感数据(密码、令牌、个人标识符)已从日志输出中过滤或脱敏。
步骤 4:依赖项和 CVE 检查
- 扫描项目依赖项:
bundle exec bundle-audit check --update - 如果发现漏洞,请规划安全的版本升级。
检查点模式
与用户协同:
- 安全漏洞评估: 按威胁向量(例如 SQL 注入、密钥泄漏)分类并说明问题。
- 缓解措施验证: 修复完成后,演示参数化查询或筛选器如何阻止攻击向量。
代码防护示例
1. 防止 SQL 注入
存在漏洞:
db.execute("SELECT * FROM users WHERE name = '#{params[:name]}'")
安全:
db.execute("SELECT * FROM users WHERE name = ?", params[:name])
2. 防止 Shell 注入
存在漏洞:
system("rm -rf #{params[:path]}")
安全:
system("rm", "-rf", params[:path])
集成
| 上下文 | 下一项技能 |
|---|---|
| 标准代码审查 | review-process |
| 常规 TDD 循环 | tdd-process |
评论
支持 Markdown