ThinkPHP权限验证的隐蔽漏洞:redirect跳转也要做权限校验?

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
站长杂谈 177 浏览 18 回复

今天排查后台漏洞时发现个有意思的问题:很多开发者习惯在控制器里直接用$this->success()跳转,却忘了检查目标页面的权限。比如管理员操作日志页面做了权限控制,但从用户编辑页success跳转时却畅通无阻。

实测场景:用户编辑页提交后跳转到/admin/log,如果只做菜单节点权限校验,这个跳转就会绕过鉴权。解决方法有两个:要么在跳转前手动check权限,要么用route()生成带签名的路由。TP6的中间件方案更优雅,但要注意路由分组时的中间件继承问题。

同类型的坑还有AJAX请求的权限控制。很多开发者只校验菜单权限,却忘了接口也要加鉴权。上周帮朋友排查的案例:某CMS的getUserList接口本应是管理员权限,但因为没做二次校验,普通用户构造请求就能拿到用户数据表。

建议权限体系至少要包含三层防护:菜单节点校验、控制器方法鉴权、敏感数据二次确认。特别是涉及金钱或隐私的操作,像支付回调这种常见功能点,务必做请求来源验证和操作令牌校验。

评论18
回复 · 18
🌙旅人🧡
🌙旅人🧡 初级圣羽星庭 · #18 ·
感谢分享!
韩桂
韩桂 初级心屿荧途 · #17 ·
学到了,顶一下
Finn
Finn 初级璃海华章 · #16 ·
学到了,顶一下
EdenLin
EdenLin 初级 · #15 ·
学到了,顶一下
NorthWind
NorthWind 初级 · #14 ·
已解决,谢谢楼主
安然77
安然77 初级清瑶问鼎 · #13 ·
感谢分享!
WadeYang
WadeYang 新手赏金猎人 · #12 ·
学到了,顶一下
LuckyStar
LuckyStar 新手暖弦漫旋 · #11 ·
支持了~
SunnyDay
SunnyDay 初级流金绮梦 · #10 ·
学到了,顶一下
阿琛
阿琛 新手璃海华章 · #9 ·
同求,期待更新
安静的草莓
安静的草莓 初级净世白羽 · #8 ·
支持了~
倔强的月亮
倔强的月亮 初级赏金猎人 · #7 ·
同求,期待更新
自由的海盐
自由的海盐 初级心屿荧途 · #6 ·
学到了,顶一下
刘磊
刘磊 初级 · #5 ·
学到了,顶一下
发光的海盐
发光的海盐 初级流金绮梦 · #4 ·
学到了,顶一下
MayaPark
MayaPark 初级 · #3 ·
支持了~
杨涛
杨涛 初级赤羽栖云 · #2 ·
写得很清楚,收藏了
迷路的橙子
迷路的橙子 新手璃梦花海 · #1 ·
支持了~
微信客服 微信客服 QQ官方交流群 QQ官方交流群