首页/安全/渗透测试与安全评估速查/IDOR 越权验证(不安全的直接对象引用)
常见漏洞验证121 条

IDOR 越权验证(不安全的直接对象引用)

接口用可预测 ID 直接定位对象且不校验归属时形成越权;用两个测试账号交叉尝试对方对象 ID,观察是否可读/可改。

IDOR 越权验证是什么

IDOR(Insecure Direct Object Reference,不安全的直接对象引用)指接口用可预测或可枚举的标识直接定位资源,却没有在服务端校验该资源是否属于当前会话的主体。典型表现是:把 URL 或请求体里的订单号改成别人的编号,就能看到对方的数据。判断 IDOR 不看 ID 是否可预测——即使使用 UUID,只要缺少归属校验,同样成立。验证方法是用两个同权限测试账号交叉访问对方的对象,观察服务端返回数据、返回错误还是静默忽略。读操作优先验证,写操作需先获授权并准备回滚。

基本信息

风险类型越权访问,对应 OWASP API Security Top 10 的 BOLA
关注对象订单、工单、发票、文件、消息、用户资料
判断标准服务端是否按会话主体校验资源归属
验证方法账号 A 用账号 B 的对象 ID 发起请求
操作原则读操作优先;写操作需授权并记录回滚

典型使用场景

  • 列表与详情接口:GET /orders/{id} 这类直接以 ID 取数的接口
  • 文件下载:/download?fileId=… 未校验文件归属
  • 消息与通知:站内信、私信接口可读他人会话
  • 导出与打印:导出任务未绑定当前用户,越权拿到他人数据
  • 批量接口:一次提交多个 ID 时逐个校验缺失

验证步骤

验证步骤
1. 准备两个同权限测试账号 A/B,各创建一个对象
2. 记录 A 的对象 ID 与访问接口(路径与参数结构)
3. 用 B 的会话访问 A 的对象 ID,观察响应
4. 区分三类结果:可读、可写、仅报错
5. 记录接口、请求样本与响应差异(脱敏)
6. 写操作验证后立即恢复数据并在报告注明

响应结果读法

服务端响应含义结论
返回 200 且含他人数据未校验归属越权成立,按影响分级
返回 403 或 404按会话主体校验后再取数防护有效,404 优于 403 以减少信息暴露
返回空数据或占位可能仅做了存在性过滤需交叉验证是否真的无数据
重定向到登录页会话失效或鉴权前置该路径鉴权到位
返回 200 但缺业务字段疑似字段级鉴权可能仍有部分越权,逐字段核对
修复视角:服务端按会话主体校验资源归属,而不是信任客户端提交的 ID;权限判断应体现在查询条件里,而不是查出数据后再判断。
不要用真实用户数据做越权验证,会触碰隐私红线;使用自建测试账号与自建数据,验证完成后立即清理相关记录。

易错点

  • 只看 ID 是否可预测,漏掉 UUID 但缺归属校验的情况,UUID 无法替代授权
  • 用真实用户数据做验证,触碰隐私红线;应使用两个自建测试账号交叉验证
  • 只验证读接口,忽略导出、打印、批量提交等写入或聚合场景
  • 写操作验证后未恢复数据,造成业务数据被篡改

数据来源与参考

  • OWASP WSTG WSTG-ATHZ-04
  • OWASP API Security Top 10(API1 BOLA)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌