测试结论从什么结果开始
对象编号可猜测时,怎样做访问控制测试?首先需要把“无跨用户读取且提示不泄露明细”写成可判定的结果。这里讨论的是客户订单详情,一个需要验证的风险是把知道编号当作拥有读取权限。仅看到页面操作顺利还不够,测试记录必须能说明业务结果是否真实发生,以及失败时是否留下了不该产生的影响。
权限测试应使用权限不同的独立账号。管理员自测无法证明普通用户安全;列表、详情、附件和导出也可能采用不同的校验路径。
复现时保留哪些证据
本题需要保存本人及他人资源编号和响应内容。把一次正常操作和一次异常操作放在相同版本、相同环境下比较,记录输入、操作时点及实际结果;敏感值可以替换,但触发问题的字段关系不能删掉。若无法重新出现“把知道编号当作拥有读取权限”对应的差异,先补足样本,暂不把猜测写成已确认根因。
保留被拒绝的请求编号和服务端判定结果,确认拒绝发生在返回数据之前。把只读与修改动作分别验证。
执行三个针对性检查
第一项是使用授权样本换编号,将判定口径写清楚后执行。第二项是校验归属,同时保存本人及他人资源编号和响应内容中的相关记录。第三项是检查错误信息,对照“无跨用户读取且提示不泄露明细”逐条确认。三个检查应分别记录结果,这样失败时可以知道问题出在输入、处理中还是结果核对,避免一次修改多个环节后失去判断依据。
用边界例子发现遗漏
将本人资源与授权测试中的他人资源交换编号。错误响应也不应返回完整名称、金额或附件地址。
例如:修改地址参数就看到他人订单。这个例子不是客户项目事实,而是用于测试客户订单详情的样本设计。先写下按业务规则应该发生什么,再执行并比较;不能用程序当前表现反过来定义正确结果。修复后还要重跑原样本,并检查附近的合法操作仍然可用。
测试账号和样本需要明确授权。不能拿真实客户的敏感资料做演示,也不能只靠隐藏按钮作为访问控制。
怎样算验收通过
验收应能够证明:无跨用户读取且提示不泄露明细。结果附上环境、版本、样本和记录位置;异常提示、持久化结果与相关后续动作应互相一致。若“修改地址参数就看到他人订单”仍能触发错误,就应列为未解决事项,并说明影响范围。测试通过不代表以后永不出错,后续变更至少保留这一问题的回归样本。
执行与验收清单
- 明确客户订单详情的正确结果:无跨用户读取且提示不泄露明细。
- 准备并脱敏核对资料:本人及他人资源编号和响应内容。
- 执行使用授权样本换编号,保留对应结果。
- 完成校验归属与检查错误信息,核对实际产物。
- 使用“修改地址参数就看到他人订单”复查问题,并记录未解决事项。