mcpField
R
rails-security-review

rails-security-review

github.com/midudev安全7.0k57 次安装1 周前更新
代码仓库

关于 rails-security-review

面向审查或加固 Rails 代码的安全评估技能,优先关注可利用的问题,并要求报告先列出认证与授权发现。内容涵盖输入、输出、查询和密钥处理风险。

主要功能

  1. 01报告优先列出认证与授权
  2. 02检查参数和查询安全
  3. 03审查重定向与输出编码
  4. 04检查文件、网络调用和密钥
  5. 05按严重性、攻击路径和修复建议组织问题

适用场景

  1. 01审查 Rails 代码中的安全缺陷
  2. 02加固授权和参数处理
  3. 03编写包含具体攻击路径的发现报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/midudev/autoskills --skill rails-security-review

安装后在 Claude Code 中输入/rails-security-review确认已加载。

附带文件PITFALLS.md

详细介绍

Rails 安全审查

当任务是从安全角度审查或加固 Rails 代码时,使用此技能。

核心原则: 优先关注可利用的问题,而非代码风格。假设任何不可信输入都可能被滥用。

硬性门槛:授权问题优先列入报告

BEFORE returning your security review, verify:
  1. The FIRST finding section in your output is "Authentication & Authorization"
  2. SQL injection, XSS, or other findings come AFTER auth/authz — even if
     they feel more severe or were discovered first
  3. If no auth/authz issue exists, the report still opens with an explicit
     "Authentication & Authorization: no issues found" line BEFORE any other
     finding category

快速参考

领域关键检查项
身份验证每项敏感操作都具备权限检查
参数不使用 permit!,仅允许安全属性
查询使用参数化查询——SQL 中不进行字符串插值
重定向限制为相对路径或允许列表
输出不对用户内容使用 html_safe/raw
密钥凭据须加密,绝不写入代码或日志
文件验证文件名、内容类型和目标位置

审查顺序

  1. 检查身份验证和授权边界。
  2. 检查参数处理和敏感属性赋值。
  3. 检查重定向、渲染和输出编码。
  4. 检查文件处理、网络调用和后台作业输入。
  5. 检查密钥、日志记录和运行环境中的暴露风险。
  6. 核实每项发现: 在报告前,通过具体攻击场景确认问题可被利用。排除误报(例如,对开发者定义的常量而非用户输入使用 html_safe)。

严重性级别

高
  • 缺少或可绕过的授权检查
  • SQL、shell、YAML 或常量化注入路径
  • 不安全的重定向或可能导致 SSRF 的出站请求
  • 文件上传处理盲目信任文件名、内容类型或目标位置
  • 密钥或令牌存储在代码、日志或不安全配置中
中
  • 参数过滤薄弱,导致未限定范围的批量赋值
  • 渲染用户控制的 HTML,且未明确进行清理
  • 以明文记录敏感数据
  • 安全相关行为隐藏在缺少防护措施的回调或后台作业中
  • 脆弱的自定义身份验证逻辑;使用框架原语会更安全

审查清单

  • 每项敏感操作是否都强制执行权限检查?
  • 不可信输入在用于数据库、文件系统或网络之前是否经过验证?
  • 重定向和 URL 是否受到限制?
  • 密钥是否安全存储和记录?
  • 安全假设是否明确且可测试?

示例

高严重性(未限定范围的重定向):

# Bad: user-controlled redirect — open redirect / phishing risk
redirect_to params[:return_to]

# Good: relative path only
redirect_to root_path
# Good: allowlist
SAFE_PATHS = %w[/dashboard /settings].freeze
redirect_to(SAFE_PATHS.include?(params[:return_to]) ? params[:return_to] : root_path)

中严重性(批量赋值):

# Bad: privilege escalation risk
params.require(:user).permit!

# Good: explicit whitelist — never include role, admin, or privilege fields
params.require(:user).permit(:name, :email)

易犯问题

完整列表见 PITFALLS.md。关键反模式:对任何参数集使用 permit!、对用户内容使用 html_safe、SQL 字符串插值、将密钥提交到文件中。

输出风格

各部分按硬性门槛规定的顺序排列。每个标题都必须出现,即使内容为空(写“未发现问题。”)。

## Authentication & Authorization
## Parameter Handling & Mass Assignment
## Query Safety (SQL / NoSQL / shell injection)
## Output Encoding & Redirects
## Secrets, Logging & Operational Exposure

每项发现都包含:

  • 严重性: 高或中(不使用“严重”)
  • 攻击路径: 输入 → 到达路径 → 影响
  • 受影响文件: 路径 + 行号,例如 app/controllers/documents_controller.rb:42
  • 缓解措施: 最小且可信的修复方案

集成

技能串联使用时机
rails-code-review进行涵盖非安全问题的完整代码审查时
rails-architecture-review安全问题源于架构问题时
rails-migration-safety审查迁移安全性(数据暴露、约束)时

评论

支持 Markdown