Security Code Review Checklist for Rails

A concrete checklist for reviewing a Rails pull request — not generic advice. Items tagged automatable are exactly what a static analyzer like Scryer checks on every commit; the rest still need a human's judgment.

Security code review scales badly as "remember all the OWASP categories" — reviewers are busy, context-switch between PRs, and the same handful of mistakes recur regardless of who's reviewing. A checklist scoped to what actually shows up in Rails PRs, split by what a tool can catch versus what still needs a human, is more useful in practice than a general reference.

Input handling

Access control

Configuration

Secrets and crypto

The parts that stay human

Everything tagged automatable above is a pattern a static analyzer can reliably flag — that's what a Rails security scanner is for, and it's worth running on every commit rather than re-deriving this list by eye each time. What's genuinely left for a human reviewer: whether the *business logic* around an authorization check is actually correct for this specific feature (not just "a check exists"), whether a new third-party integration's trust boundary is reasonable, and whether a "this is fine because X" comment justifying a flagged pattern is actually true. A tool narrows down where to spend that judgment; it doesn't replace it — see why even the more precise approaches still say "review this," not "confirmed".

Running the automatable half

gem install scryer
scryer

Every automatable item above maps to one of Scryer's 31 security rules, each with a CWE ID, an OWASP category, and a confidence level — see What Scryer detects for the full rule list, and CI/CD integration to wire it into pull-request review directly (SARIF → GitHub Code Scanning inline annotations).

Further reading