version: "1.0.0" name: rust-review description: Rust 服务审查:panic、SQL 注入、密钥、错误吞没、遗留标记
Rust 服务代码审查
先用 git_diff(参数 {"base": "HEAD~1"})查看本次变更。
规则
panic-unwrap(error)
- 对可失败的输入使用
unwrap() / expect():用户输入解析、Option 解包等 - 会导致服务 panic 的位置
- 注意:同一个语句里的多个 unwrap 算一个 finding
- rule_id:
panic-unwrap
sql-injection(error)
- 字符串拼接构造 SQL(
format! 拼 SQL、+ 拼 SQL) - 应使用参数化查询
- rule_id:
sql-injection
hardcoded-secret(error)
- 源码中硬编码的密码、连接串凭据、API key
- rule_id:
hardcoded-secret
swallowed-error(error)
- 用
let _ = 静默丢弃 Result(无日志、无处理) - rule_id:
swallowed-error
todo-marker(warning)
- 生产代码中遗留的
todo!() / unimplemented!() - rule_id:
todo-marker
每个 finding 附带 location(文件 + 行号)与证据(代码片段)。