OWASP A01 权限控制:登录成功不代表可以读取任意订单
从对象、租户和操作三个维度检查 API 授权,避免只隐藏按钮或依赖前端校验。
本文目录
认证确认身份,授权决定动作
OWASP Top 10:2025 将访问控制失效列为 A01。用户通过登录后,应用仍需判断其能否读取、修改或删除当前对象。把某个订单编号放在 URL 中、给按钮加隐藏样式,都不能代替服务端对对象归属和操作权限的判断。
多租户系统先确认租户边界
建议从可信会话确定租户上下文,不直接相信客户端提交的租户编号。查询、导出、附件下载和异步任务都要保留同样的边界;权限变更后,还应检查缓存、已签发链接和后台任务是否继续保留过期授权。
用角色矩阵设计测试
准备匿名用户、普通用户、另一租户用户和管理员等测试身份,针对同一对象分别验证查询、修改、删除和批量操作。预期拒绝应由服务端执行,并记录可追踪的结果。不要只测试正常账号能成功访问这一种情况。
缓存与边缘防护配合权限设计
私有响应应避免被共享缓存错误复用;授权接口的缓存键和失效机制要经过验证。WAF 可以过滤部分异常请求,却通常无法知道一个订单属于哪个业务租户。真正的权限判断仍由业务系统负责,失败记录应进入审计与告警。
参考资料
OWASP Top 10 2025: Broken Access Control
