
越权问题分为两类:横向越权和纵向越权 。
横向越权指得是获取了同级别用户的权限:例如A登陆自己的商城 , 却能够看到B的订单 。
纵向越权是指获取了更高级别用户的权限:例如普通用户A获取了管理员用户B的权限 。
【程序员|程序员应知应会之越权问题】横向越权产生的一个原因 , 是只做了认证 , 却没有做鉴权 。 例如:国内某知名国企系统 , 以手机号作为登陆名 。 当登陆认证通过时 , 查询个人信息 , 会把手机号和token一起post给后台 , 后台查看token正确之后 , 会执行select * from infomation where id = 手机号 。 如果此时 , 用浏览器自带的调试功能 , 对该请求编辑并重发时 , 将手机号换成别人的 , 即可返回其它人信息 。 而理论上手机号的范围只在10000000000到19999999999之间 , 所以利用该漏洞 , 可以获取所有人员包括工资、身份证号码、个人住址等隐私信息 。
对于这种横向越权问题 , 可以将token做鉴权 , 即将token与登陆名绑定 , 这样用户就无法访问到其它用户的信息了 。
纵向越权最常见的场景是 , 对于高级别权限的url没有做鉴权 , 而只是简单地对普通用户隐藏了起来 。 例如当用户登陆时 , 后台会判断用户角色 , 然后返回角色对应的菜单 , 例如普通用户有三个菜单 , 而管理员用户有五个 。 但是只是没有把管理员用户多余的两个菜单返回给普通用户而已 。 如果普通用户猜出了管理员用户专用的url , 直接在浏览器中输入 , 则可以进入管理员菜单 。
对于这种纵向越权问题 , 解决方法也很简单 , 只需要将session与用户角色强绑定 , 并且在每个url进入时都进行验证就行了 。
总结起来 , 越权问题并不可怕 , 产生的原因通常都是开发周期或程序员责任心的问题 。 在数据安全越来越重要的今天 , 保护用户隐私益发被重视 。 但是依然还是有很多单位的系统存在安全问题 。 足以让听者落泪 , 闻者足戒 。
- 程序员|程序员的口味变了!C++首次逆袭JAVA:跻身最受欢迎编程语言TOP3
- 小米13|数影周报:程序员离职后锁公司硬盘;“交个朋友”成立淘宝事业部
- 靠玩ChatGPT|0行代码拿210万年薪程序员新工作纯靠和ai聊天
- 程序员|0行代码拿210万年薪 程序员新工作纯靠和AI聊天
- 程序员|偶然当程序员却拿下图灵奖 超算榜单之父讲述人生开挂经历
- 偶然当程序员却拿下图灵奖,超算榜单之父讲述人生开挂经历
- 乐学圆梦:30岁转行做程序员,该从哪方面入手?
- 好学编程:作为程序员,赚取额外收入的 4个简单副业!
- 程序员|某乎上出现了一个画风清奇的问题:“国家何时整治程序员的高薪现象?”
- 程序员|程序员培训机构哪家好?程序员培训机构前十排行榜—课程篇
