把账号、租户、资源和操作组合成测试矩阵,检查列表、详情、导出与异步任务中的对象级权限。

用户已经登录,只能证明请求带有某种身份,不能证明其有权读取指定订单、文档或任务。对象级授权应同时检查“谁在请求、属于哪个租户、要操作什么、允许做什么”。
先列对象,再列入口
选择一类敏感对象,为租户 A、租户 B 各建立测试资源,准备普通成员和管理员测试账号。除了详情接口,还要列出搜索、批量操作、导出、附件下载、分享链接和后台任务结果入口。遗漏的入口常常比主页面更难发现。
OWASP 授权指南强调默认拒绝、最小权限和每次请求都执行授权检查。随机或难猜的对象编号可以降低枚举便利性,但不能替代服务端权限判断。
用最小矩阵做回归
| 场景 | 预期 |
|---|---|
| A 成员访问授权给自己的 A 资源 | 按业务规则允许 |
| A 成员访问 B 资源 | 拒绝且不返回敏感字段 |
| 已移除成员访问旧链接 | 及时失去原权限 |
| 普通成员提交管理员操作 | 服务端拒绝 |
所有测试只使用受控账号和测试数据。检查响应正文、下载文件和异步结果,而不是只断言 HTTP 状态码。错误提示也应避免泄露其他租户资源是否存在。
把权限边界放到数据访问路径
查询与修改应携带经过认证的租户及主体上下文,不从请求参数直接接受“当前租户”。批量接口要逐项或按等价的安全范围校验;后台工作进程也要明确任务创建时与执行时的权限语义。
验收报告记录被覆盖的入口、角色和拒绝原因,变更权限模型时重新跑矩阵。前端隐藏按钮只影响界面,不能作为安全控制的完成证据。
参考:OWASP:Authorization Cheat Sheet。核对日期:2026年10月4日。
