水平越权访问与垂直越权访问漏洞的解决办法

1、

水平越权访问与垂直越权访问漏洞
越权访问漏洞
越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。

该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。越权访问漏洞主要分为水平越权访问和垂直越权访问。

水平越权访问漏洞
水平越权访问是一种“基于数据的访问控制”设计缺陷引起的漏洞。由于服务器端在接收到请求数据进行操作时没有判断数据的所属人/所属部门而导致的越权数据访问漏洞。

假设用户A和用户B属于同一角色,拥有相同的权限等级,他们能获取自己的私有数据(数据A和数据B),但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户A能访问到用户B的数据(数据B),那么用户A访问数据B的这种行为就叫做水平越权访问。

垂直越权访问漏洞
垂直越权是一种“基于URL的访问控制”设计缺陷引起的漏洞,又叫做权限提升攻击。

由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。

防范措施
前后端同时对用户输入信息进行校验,双重验证机制
调用功能前验证用户是否有权限调用相关功能
执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤
————————————————
版权声明:本文为CSDN博主「haha13l4」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/haha13l4/article/details/90383901

 

2、

横向越权与纵向越权

横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源
纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源

如何防止横向越权漏洞:
可通过建立用户和可操作资源的绑定关系,用户对任何资源进行操作时,通过该绑定关系确保该资源是属于该用户所有的。
对请求中的关键参数进行间接映射,避免使用原始关键参数名,比如使用索引1代替id值123等

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


水平权限问题

攻击者可以根据接口参数中的id加1等操作,来获取其他用户的权限或数据。

解决方法

  • 水平权限参数不要用自增值,用id加密、随机数或GUID,但搜索引擎或攻击者可以同样用这个随机数和连接去进行操作
  • web层检查发起请求的用户权限,比如从session信息中获取
  • 数据库表增加ownerId字段,增删改查询时加上其作为where语句条件(即每一个信息增加一个发布人的字段,修改的人必须与发布的人为同一个人才可以访问)

垂直权限漏洞是指Web应用没有做权限控制,或仅仅在菜单上做了权限控制,导致恶意用户只要猜到了其他页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。
修复方案:
只需要对url资源进行权限验证即可。

 

感谢:https://www.cnblogs.com/wyp1988/p/10019126.html

你可能感兴趣的:(微服务设计,工作)