用途:审查使用 Casbin 授权库的 Go 代码,发现安全漏洞、模型配置错误和常见反模式,确保 RBAC/ABAC 实现符合最佳实践。适用于审查含 Casbin 的 PR。不适用于初次搭建 Casbin(应使用 implementing-casbin)、学习 Casbin 基础或非 Go 实现。
主要能力:按优先级检查关键区域。模型文件错误(严重):RBAC 模型缺少角色定义 g = _, _、匹配函数选错(/users/:id 用 keyMatch2,/users/{id} 用 keyMatch3,/users/* 用 keyMatch)。Enforcer 初始化(严重):忽略错误、硬编码路径、缺少 EnableAutoSave(true)。中间件安全(严重):不安全的类型断言、授权前未做认证检查。Enforce 错误处理(高):忽略错误、HTTP 状态码用错(401 表示未认证,403 表示已认证但无权限)。策略线程安全(高):并发修改策略应使用 SyncedEnforcer 或单写者加锁。缺失授权检查(高):端点无授权中间件、应用不一致、缺少资源级授权、管理端点无额外保护。硬编码策略(中)、性能问题(中,循环内 Enforce 应改用 BatchEnforce)、ABAC 空值安全(中)、测试覆盖(低)。
使用方式:先用 grep 定位 Casbin 文件与执行点,再运行自动化检查,然后按优先级审查关键区域,最后按输出模板生成报告。常用命令:grep -r "casbin" --include=".go" -l;grep -r "Enforce|AddPolicy|NewEnforcer" --include=".go" -l;find . -name ".conf" | xargs grep -l "request_definition";grep -rn "NewEnforcer.|Enforce.*" --include=".go";grep -rn ".Value.).(string|int)" --include=".go" | grep -v ", ok";grep -rn "AddPolicy|AddRoleForUser" --include=".go" | grep -v "_test.go"。
限制:仅面向 Go 语言 Casbin 实现;具体收费、价格、平台与效果资料暂未提供。