上一篇 下一篇 分享链接 返回 返回顶部

越权访问漏洞:水平越权与垂直越权案例

发布人:用户运营 | 723 发布时间:2小时前 阅读量:1

该文章由AI生成,仅为SEO优化测试,相关内容不保证准确!!!

引言

越权访问是业务系统最常见、也最容易被忽视的漏洞:页面把“我的订单”入口隐藏了,但接口本身没校验归属——攻击者改一下 URL 里的 ID,就能看别人的数据。它与 SQL 注入不同,不需要特殊构造的输入,只需要“换一个参数值”。

两类越权的定义与案例

水平越权:同级用户之间互相访问对方的数据。典型案例:订单详情接口 /order/detail?id=123,服务端只判断了“是否登录”,没判断“这单是不是你的”——把 id 改成遍历值,别人的订单全部可见(含姓名、电话、地址)。这类也叫 IDOR(不安全的直接对象引用)。
垂直越权:低权限用户执行高权限功能。典型案例:管理后台接口 /admin/user/delete 没有校验角色,普通用户直接 curl 调用即成功。攻击者从前端 JS 里发现隐藏的管理接口地址,绕过“按钮不显示”的假防护。

为什么前端隐藏不是防护

很多开发者以为“管理菜单不显示给普通用户”就安全了。实际上前端的任何东西都在用户手里:接口地址能从 JS、网络请求里看到;请求参数能用浏览器开发工具随意改。安全必须由服务端在每个请求上强制校验——前端只是体验优化,不是安全边界。

防护方法:服务端强制鉴权

核心原则:每个请求都要校验“当前身份 + 目标资源归属 + 操作权限”。落地要点:① 身份从服务端会话取:当前用户 id 从 session/token 解析,绝不接受请求参数里的 userId;② 资源归属校验:查询时带上归属条件——SELECT * FROM orders WHERE id=? AND uid=?,一条 SQL 同时完成查询与鉴权,比“查出来再判断”更不易遗漏;③ 角色校验:管理接口在路由层统一拦截校验角色,而不是每个方法里散落判断;④ 用间接引用:对外暴露随机 token 而非自增 ID,降低遍历成本(但不能替代归属校验);⑤ 审计与测试:写自动化用例模拟“用户 A 的 token 访问用户 B 的资源”,上线前跑一遍;把越权测试纳入渗透测试必测项。

常见易漏点

① 新增接口忘了加校验——权限校验要靠路由层统一拦截兜底,而不是依赖每个开发者的自觉;② 文件下载/图片接口:/download?file=123 直接按 ID 给文件,不校验归属;③ 导出、批量操作接口:列表有校验,导出接口漏了;④ 前后端分离时的“公开接口”:未登录可调用的接口往往是最薄弱的;⑤ 内部接口:以为内网就安全,一旦 SSRF 或边界穿透就全线失守。

总结

越权漏洞的根源是“信任了客户端”。防护的一句话原则:服务端对每个请求执行“身份校验 + 归属校验 + 权限校验”,三者缺一不可。水平越权靠资源归属条件(WHERE uid=?),垂直越权靠路由级角色拦截。写完接口后,用另一个账号的 token 调一遍,是最好的自测习惯。

目录结构
全文
微信公众号 微信公众号
抖音官方账号 抖音官方账号
CSDN官方账号 CSDN官方账号
经营主体身份码 经营主体身份码
电子邮箱: admin@2v8.cn

本页面部分展示信息可能存在偏差/错误