《后台权限设计翻车实录:那些年我们漏掉的鉴权细节》
上周升级系统时发现个致命问题:普通编辑居然能通过URL直接访问管理员操作接口!排查后发现是路由中间件漏了权限校验。这种低级错误让我惊出一身冷汗,连夜把项目里所有Controller都加上了$this->checkAdmin()。
分享几个血泪教训:
1. 路由白名单最容易翻车。我们曾给/api/public/*设置免鉴权,结果有人把敏感接口挪到这个目录下,直接暴露用户隐私数据。现在改成显式声明每个接口的权限等级,白名单只用于静态资源。
2. 前后端分离的权限坑。Vue项目里用localStorage存token,结果XSS漏洞导致令牌被盗。后来改成HttpOnly的Cookie+双重校验,后端再对敏感操作强制要求二次密码验证。
3. 越权查询防不胜防。有次发现通过修改?id=123就能查看他人订单,最后给所有ORM查询自动注入user_id条件:
$query->where('user_id', auth()->id());
现在我们的安全检查清单多了条:新功能上线前必测三种账号(未登录/普通用户/管理员)的权限表现。你们还有什么防翻车技巧?说出来让大伙避避坑。
最新打赏

