【安全漏洞】水平权限漏洞和垂直权限漏洞

 

 

前言

        权限校验非常重要。如果不对水平、垂直权限做校验,就会发生泄漏用户数据的事故,造成P0故障。

 

一、水平权限漏洞

1、水平权限漏洞基本概念

什么是水平权限漏洞呢?

8fbf4d42662b466e84d45a23373a8927.png

         简单来说,水平权限漏洞是用户CURD了本不属于他的资源。以上图结构举例来说:用户B可访问2/3两个数据,当是当用户B尝试去CURD数据1且操作成功,这时候用户B的行为就是我们说的水平权限漏洞。

 

2、水平权限漏洞危害

        用户访问成功、修改成功、删除成功、查询成功本不属于他的数据。

        比如用户B对数据1执行CURD操作,虽然数据1本不属于用户B,但是我们缺少对‘水平权限’的校验,导致用户B对数据1CURD成功。

 

3、水平权限漏洞解决方案

        方案有多种,此处我讲解一种比较常用的方案。

        这个是最直接有效的修复方案:在web层的逻辑中做鉴权,检查提交CRUD请求的操作者(通过session信息得到)与目标对象的权限所有者(查数据库)是否一致,如果不一致则阻断。这个方案实现成本低、能确保漏洞的修复质量,缺点是增加了一次查库操作。我之前一直用这种方案来对已发生的水平权限漏洞做紧急修复。

XT解决水平权限的方案和上述方案一致,举例:

        用户A对groupid=1001进行删除操作,那么web端是拿着groupid=1001到数据库里面找ownerid。如果ownerid=用户A,那么说明可以执行删除操作;如果不等于,说明水平权限泄漏,操作失败。      当然,如果允许主账号可以对子账号进行删除操作,那么如果用户A满足主子账号的要求,即使ownerid!=用户A,而等于主账号,也是OK的。   具体的看业务场景。

 

二、垂直权限漏洞

1、垂直权限漏洞基本概念

        纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源。

        垂直权限漏洞是指Web应用没有做权限控制,或仅仅在菜单上做了权限控制,导致恶意用户只要猜到了其他页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。

 

2、垂直权限漏洞危害

        访问了本不属于自己的菜单界面、接口。

 

3、垂直权限漏洞解决方案

        建议使用基于角色访问控制机制来防止纵向越权攻击,即预先定义不同的权限角色为每个角色分配不同的权限每个用户都属于特定的角色,即拥有固定的权限当用户执行某个动作或产生某种行为时,通过用户所在的角色判定该动作或者行为是否允许

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@来杯咖啡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值