API越权漏洞的三种核心类型
信息安全避坑指南:API越权怎么做更稳
说起API越权,很多人第一反应是“权限校验没做好”,但实际漏洞拆开来看,其实就那么几种套路。搞清楚这些类型,比盲目扫接口或加防火墙要实在得多。根据OWASP API Security Top 10和大量实战案例,API越权漏洞可以归为三类核心形态。
水平越权:A用户看到了B用户的数据
这是最常见也最容易踩坑的一类。本质是API依赖用户可控的标识符(比如用户ID、订单号、手机号)来访问资源,却没有校验当前登录用户是否有权操作这个标识符。比如一个简单的GET请求:/api/user/orders?id=12345,攻击者把id换成12346,如果后端只凭这个参数去查数据库并返回结果,那就中招了。这种漏洞在RESTful API里几乎每周都能扫出来,尤其当参数从URL参数、请求体、甚至Cookie里直接拿的时候。
垂直越权:普通用户干管理员的事
说白了就是权限没分层。API虽然有接口,但后端没检查角色。比如管理员删除用户的接口是DELETE /api/users/{id},攻击者伪装成一个普通用户,直接发同样的DELETE请求,结果删掉了别人。垂直越权的核心是“功能级权限校验”缺失。更隐蔽的是,有些系统用前端隐藏按钮来控制,后端却完全信任请求中的角色字段,攻击者改个HTTP Header或JWT里的角色就一路畅通。这类漏洞在微服务架构里尤其头疼,因为服务间调用往往默认信任身份,缺乏二次校验。
对象级越权:操作了不该操作的资源对象
这个和水平越权有交叉,但更偏重“资源本身”而非“用户”。比如一个文件上传API允许上传图片,但攻击者通过修改文件名参数,把文件写到服务器系统目录下;或者一个批量查询API,传入{ids: [1,2,3,999]},结果把id为999的敏感配置也查了出来。对象级越权的关键在于“资源标识符”的边界没收紧。典型场景是数据库里的主键自增,攻击者可以遍历;或者对象存储的Bucket权限设的宽,用户通过API直接访问别人的文件。这类漏洞在云原生、SaaS平台中非常普遍,因为资源隔离全靠参数传。
怎么一眼识别? 看请求里是否包含“能唯一标识某个资源”的参数,并且这些参数是否被随意篡改。水平越权重在“用户间数据隔离”,垂直越权重在“角色功能权限”,对象级越权重在“资源范围限制”。实战中,三者常常组合出现,比如一个管理员接口的批量删除对象功能,既有垂直越权(角色检查缺失),又有对象级越权(无资源范围检查)。搞懂这三类,再看那些所谓的“高级漏洞”就只是变种了。

参与讨论
水平越权真的常见,用个用户ID查数据都不校验,太离谱了。