越权漏洞分水平越权(访问同级别其他用户的资源)和垂直越权(低权限用户执行高权限操作),是 OWASP 2021 版排名第一的漏洞类型,在 Web 应用和移动端后端 API 中极为普遍。

| OWASP 2021 排名 | A01(第一位) |
| 常见子类 | IDOR(不安全直接对象引用)、功能级访问控制缺失 |
| 防御核心 | 服务端对象级权限验证,拒绝前端鉴权替代 |
水平越权(Horizontal):用户 A 访问了本应只属于用户 B 的数据。最典型的形式是不安全的直接对象引用(IDOR)——URL 中含有 /order/12345,只需把 12345 改为 12346 就能查看他人订单。服务端未检查请求者是否拥有该资源的所有权。
垂直越权(Vertical):普通用户访问了管理员功能。常见于前端隐藏了管理菜单但后端 API 未鉴权,攻击者直接访问 /admin/deleteUser 即成功。这类漏洞在「前端鉴权」思维下大量产生。
2019 年,国内某外卖平台被曝光 IDOR 漏洞:订单详情接口仅凭订单 ID 返回包含姓名、手机、收货地址的完整信息,遍历订单 ID 即可批量获取用户隐私,这是水平越权在真实环境中的典型后果。[1]
防御越权的核心逻辑只有一条:每次访问资源时在服务端验证当前用户是否有权操作该资源,而不是依赖 ID 的不可猜测性(UUID 也可以通过其他接口泄露)。
实现方式可以是在每个数据库查询中附加用户 ID 条件(WHERE id = ? AND user_id = ?);或引入对象级授权框架,如 Pundit(Ruby)、django-guardian(Python);或在 API 网关层统一检查资源归属。
RBAC(基于角色的访问控制)解决垂直越权,但不足以处理水平越权;ABAC(基于属性的访问控制)能同时处理两者,但实现复杂度更高。Netflix、Airbnb 等公司的内部权限系统通常是两者的混合体。

| OWASP 2021 排名 | A01(第一位) |
| 常见子类 | IDOR(不安全直接对象引用)、功能级访问控制缺失 |
| 防御核心 | 服务端对象级权限验证,拒绝前端鉴权替代 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧