用途:审查和设计接口安全,覆盖功能权限、数据权限、文件上传与接口签名防重放,聚焦越权绕过和文件上传两类漏洞,可在编写或审查 API 时使用。
主要能力: 功能权限检查防越权,登录控制含单设备登录、环境与异常检测;按框架补充鉴权注解,如 Shiro 的 @RequiresAuthentication、@RequiresPermissions("sys:user:view")、@RequiresRoles("admin"),Spring Security 的 @PreAuthorize("hasAuthority('sys:user:view')") 等。 数据权限检查防越权取数,对数据归属参数校验(如 @RequiresDataPermissions 加本地 DataScopeProvider),按角色/用户设置访问范围并动态追加过滤条件,避免返回全表无过滤数据。 文件上传三层控制:前端格式白名单与大小限制;后端基于 JSR303 扩展注解(如 @FileNotEmpty)校验非空、扩展名白名单、最大尺寸、MIME 类型;运维用 Nginx client_max_body_size 限制请求体。存储须重命名(UUID),禁止用户可控路径拼接。 接口签名机制:对外敏感接口采用 apikey + timestamp + signature,客户端 signature = HMAC(secret, apikey + timestamp + body),服务端校验 apikey、timestamp 窗口与重算签名,建议 ±5 分钟窗口加 nonce 缓存防重放。 配套自查清单和工作流,从资产与信任边界、请求路径、输入与上传、失败路径到输出修复与测试证据。
使用方式:在编写或审查接口时按决策和交接读取 references/rules/decision-contract.md 与 references/operations/evidence-playbook.md,只打开 examples/ 中匹配当前资产的示例。
限制:不适用于静态代码风格、依赖 CVE 或数据库加密;仅凭控制器注解不能证明无越权,还需跟踪服务、查询和缓存路径;不得使用真实凭据或生产个人数据测试。归属信息不能直接信任客户端参数,签名比对须常量时间,扩展名不是可信类型证据。