越权问题分为两类:横向越权和纵向越权 。
横向越权指得是获取了同级别用户的权限:例如A登陆自己的商城 , 却能够看到B的订单 。
纵向越权是指获取了更高级别用户的权限:例如普通用户A获取了管理员用户B的权限 。
【程序员|程序员应知应会之越权问题】横向越权产生的一个原因 , 是只做了认证 , 却没有做鉴权 。 例如:国内某知名国企系统 , 以手机号作为登陆名 。 当登陆认证通过时 , 查询个人信息 , 会把手机号和token一起post给后台 , 后台查看token正确之后 , 会执行select * from infomation where id = 手机号 。 如果此时 , 用浏览器自带的调试功能 , 对该请求编辑并重发时 , 将手机号换成别人的 , 即可返回其它人信息 。 而理论上手机号的范围只在10000000000到19999999999之间 , 所以利用该漏洞 , 可以获取所有人员包括工资、身份证号码、个人住址等隐私信息 。
对于这种横向越权问题 , 可以将token做鉴权 , 即将token与登陆名绑定 , 这样用户就无法访问到其它用户的信息了 。
纵向越权最常见的场景是 , 对于高级别权限的url没有做鉴权 , 而只是简单地对普通用户隐藏了起来 。 例如当用户登陆时 , 后台会判断用户角色 , 然后返回角色对应的菜单 , 例如普通用户有三个菜单 , 而管理员用户有五个 。 但是只是没有把管理员用户多余的两个菜单返回给普通用户而已 。 如果普通用户猜出了管理员用户专用的url , 直接在浏览器中输入 , 则可以进入管理员菜单 。
对于这种纵向越权问题 , 解决方法也很简单 , 只需要将session与用户角色强绑定 , 并且在每个url进入时都进行验证就行了 。
总结起来 , 越权问题并不可怕 , 产生的原因通常都是开发周期或程序员责任心的问题 。 在数据安全越来越重要的今天 , 保护用户隐私益发被重视 。 但是依然还是有很多单位的系统存在安全问题 。 足以让听者落泪 , 闻者足戒 。
- 程序员|成为优秀程序员的10个有效方法
- 程序员|正式取代WIFI 6,WIFI 7已经完成技术演示,比上代快3倍
- 跑分|从月入2300元的流水线女工,到年入10万美元的程序员,她用了10年
- 程序员|从月入2300元的流水线女工,到年入10万美元的程序员,她用了10年
- 程序员|前金山员工:互联网35岁魔咒已经影响到终生大事了!
- 程序员|前端变卷,要不要往全栈方向发展?
- 程序员|高考399落榜 深圳流水线女工人生逆袭:成谷歌高薪程序员
- 电子商务|「源码时代干货分享」为什么对培训机构出来的程序员有偏见
- 程序员|程序员月入3万,住在7平米出租屋不敢搬家,背后原因太心酸了
- 信息技术|程序员月入3万,住在7平米出租屋不敢搬家,背后原因太心酸了