学习目标
一张权限矩阵和仅限自己测试环境的验证记录。
适用场景
虚构资料夹要求收藏私有。登录检查只能证明有身份,不能证明某条记录属于该身份。本篇限定测试你拥有或获准测试的系统,不扫描第三方站点。
准备条件
- 独立测试环境、匿名状态,以及 A/B 两个由你控制的测试账号。
- 各创建一条无敏感内容的测试记录,明确产品本来允许公开的内容。
操作步骤
先定义公开与私有的数据边界
不是所有跨用户可见都叫越权。先确认哪类记录公开、哪类仅本人可见、管理员有什么权限。对于私有收藏,列表、详情、导出和修改要沿用同一规则;不要只修一个页面入口。
本练习的私有记录矩阵身份 读取自己的记录 读取B的私有记录 修改B的私有记录 A 允许 拒绝 拒绝 B 允许B自己的 允许 允许 匿名 拒绝 拒绝 拒绝 补充:公开内容、共享链接、管理员必须另行定义,不照抄此矩阵。在服务端逐请求核对对象归属
UI 不展示他人的按钮不构成访问控制。服务端应依据可信身份约束数据查询和写入,不能相信请求里自报的 userId;对象 ID 难猜也不能替代权限校验。拒绝状态码沿用项目约定,避免多泄露对象是否存在。
在自己的环境交换测试记录标识
用 A 的会话请求 B 的测试记录,分别检查详情、列表筛选、更新、删除与导出等实际存在的入口。记录响应与数据副作用:收到 403/404 仍需确认没有发生写入。删除验证仅使用可丢弃的测试记录。
一条测试记录格式环境与版本:待填写 请求主体:测试账号 A 对象:测试账号 B 的可丢弃记录 入口:填写实际接口,不编造 URL 预期:按矩阵拒绝,记录内容未改变 实际响应:未运行 副作用检查:未运行 清理:测试结束后回收两账号的夹具数据;保留脱敏结果把发现的漏点变成同层回归
找到漏检入口后,先补同层的接口回归,再修归属约束;同时查同类读写和后台任务是否共享规则。浏览器测试负责体验,接口测试负责数据边界;一张截图不能证明所有入口都正确。
常见误区
- 把身份验证成功当作对象访问授权。
- 每次访问具体资源都按产品规则检查权限。
- 复制真实用户数据来测试跨账号。
- 只用自己控制的测试身份和可删除夹具,不接触第三方私有数据。
验收清单
- 矩阵包含匿名、本人和其他测试身份。
- 检查实际读写与导出入口,不仅是按钮。
- 拒绝请求没有产生数据变更。
- 修复后有同层回归,敏感凭证未写入记录。
资料与版本
本文为原创方法整理,示例与提示词需按项目调整;不代表真实用户研究或账号执行结果。