游客发表
去年冬天,网站权限一个做外贸的网站权限朋友半夜给我打电话,说网站后台进不去了。网站权限他以为是网站权限服务器崩了,折腾半天才发现,网站权限是网站权限之前离职的技术把管理员权限带走了。新来的网站权限人只有编辑权限,连数据库都碰不了。网站权限一个权限设置,网站权限卡住整条业务线三天。网站权限
这事听起来离谱,网站权限但做网站的网站权限人多少都遇到过类似场景。权限这东西,网站权限平时没人注意,网站权限出事就是网站权限大事。
网站权限说白了就两层:身份认证和访问控制。前者解决"你是谁",后者解决"你能干什么"。很多人把这两件事混在一起,结果就是登录做得很严,但登录之后所有按钮都能点。
我见过一个小型电商后台,运营、客服、仓管三个人共用同一个管理员账号。问为什么不分开,答"方便"。后来客服误删了一批订单,谁也查不出是谁操作的——因为日志里只有"管理员"三个字。
这就是典型的权限粒度太粗。RBAC(基于角色的访问控制)之所以被广泛采用,不是因为理论多漂亮,而是它把"人"和"权限"解耦了。你不需要给每个人单独配一套权限,只需要定义角色——运营、编辑、财务——然后把人对号入座。
安全圈有句话:只给完成工作所需的最小权限,不多给一分。道理谁都懂,执行起来却经常走样。
原因很简单——加权限容易,收权限难。新员工入职,HR催着开通账号,技术顺手就给了个管理员,想着"反正以后要用"。三个月后人转岗了,权限还在。一年后离职了,账号还活着。
我自己的做法是:默认权限全部关闭,按需申请,用完回收。听起来麻烦,但比出事之后擦屁股省事得多。一个真实数据:Verizon 的年度数据泄露报告里,超过三成的内部数据泄露事件,根源就是权限过大或权限未及时回收。
有些开发者觉得,前端把按钮隐藏了,用户就点不到了。这只防君子,不防小人。
浏览器的开发者工具打开,改个 DOM,隐藏的按钮就出来了。如果后端接口不做校验,照样能提交请求。所以正确的做法永远是:前端控制展示,后端控制执行。前端隐藏按钮是体验优化,后端拒绝非法请求才是安全底线。
我测试过一些中小型网站,前端看不到"删除"按钮,但直接调 API 接口,数据照样被删。这种"掩耳盗铃式权限"在行业里并不少见。
最怕听到的话是"先上线,权限以后再加"。权限不是功能模块,它是架构的一部分。等到系统跑起来再往里面塞权限体系,改造成本远超一开始就设计好。
具体来说,数据库层面加个角色字段,接口层面加个中间件校验,前端加个权限指令——这三件事在项目初期做,可能多花两天。等到业务跑起来再补,可能要重构整个用户体系。
回到开头那个朋友的事。后来他花了半天时间,用数据库直接改了权限表,把管理员角色重新分配,问题解决了。但他跟我说了一句话,我印象很深:
"网站做得再漂亮,权限没管好,等于大门钥匙挂在门把手上。"
这话糙,理不糙。
友情链接