对象级授权与认证的边界区别
授权渗透测试 IDOR 核验教程:从对象标识枚举到越权证据与整改复测
对象级授权与认证经常被混为一谈,结果是测试结论和修复方案一起跑偏。认证回答的是“请求者是谁”,对象级授权回答的是“这个主体能否对这只对象执行这个动作”。登录成功只证明身份可信,不证明该身份对目标对象拥有权限;反过来,一个对象标识难以猜测,也不等于服务端已经做了归属校验。IDOR 之所以容易被误判,根源往往就在这里:把“能取到对象”直接等同于“对象级授权缺失”,却跳过了对象归属和业务共享关系的判断。
认证边界与对象级授权边界
认证缺失是另一类问题:未登录即可访问,或者仅凭会话令牌访问本账号自己的对象,并不属于 IDOR 的核心场景。还有一种情况是资源由当前会话令牌绑定,服务端不以客户端传入的标识选择对象,此时同样不构成对象级授权缺陷。真正的对象级授权问题发生在主体已经通过认证之后:在账号 A 的上下文中请求仅属于账号 B 的对象,服务端返回了 B 的真实内容,且业务上不存在共享关系。这个边界不划清,后续的对照、枚举和证据记录都会变成无法复核的抓包展示。
测试判断应回到归属关系
OWASP Cheat Sheet 对 IDOR 的验证给出了很直接的起点:创建 A、B 两个用户,分别为各自创建对象,再以 A 的身份修改对象引用访问 B 的对象,观察应用是否拒绝。这个设计的关键不在请求本身,而在结果解释。同一账号内请求自有对象应成功,跨账号请求他人对象应失败,两条结果共同支撑“对象级授权确实存在”。如果两条都成功,要先排查对象是否本就属于 A,或业务是否设计为共享,而不是立刻写成漏洞。响应码也不足以单独判定,响应体中的归属字段、字段结构、错误信息是否泄露对象存在,才是更可靠的依据。预期共享、认证缺失、会话绑定和真实对象级授权缺陷,必须分开记录。
修复不能停在标识混淆
修复应落在服务端每一次对象读取或变更操作的归属校验上,而不是只做前端隐藏或把标识换成随机值。标识复杂度只能提高猜测成本,一旦标识通过日志、链接或接口返回泄露,授权缺失仍然会暴露对象。列表、检索、导出、批量和管理动作要使用统一的授权判断路径,无法依赖会话绑定的场景则需要建立可审计的共享关系模型。回归复测时保持账号、对象、请求路径和判断依据与初测一致,先确认合法访问未中断,再确认跨账号访问被拒绝,并把停止条件和残余风险写进报告。

参与讨论
认证和授权真不是一回事,好多人混着测