权限漏洞:水平权限漏洞、垂直权限漏洞

权限漏洞:水平权限漏洞、垂直权限漏洞水平权限漏洞是指Web应用程序接收到用户请求时,没有判断数据的所属人,或者在判断数据所属人时是从用户提交的参数中获取了userid,导致攻击者可以自行修改userid修改不属于自己的数据。漏洞示例:XXX/getAddress?id=1如上,攻击者修改addressId即可得到他人的address信息。开发容易习惯性的在生成CRUD(增查改删)表单(或AJAX请求)的时候根据认证过的用…

大家好,又见面了,我是你们的朋友全栈君。

水平权限漏洞是指Web应用程序接收到用户请求时,没有判断数据的所属人,或者在判断数据所属人时是从用户提交的参数中获取了userid,导致攻击者可以自行修改userid修改不属于自己的数据。

漏洞示例:

XXX/getAddress?id=1

如上,攻击者修改addressId即可得到他人的address信息。开发容易习惯性的在生成CRUD(增查改删)表单(或AJAX请求)的时候根据认证过的用户身份来找出其有权限的被操作对象的id来提供入口,然后让用户提交请求,并根据这个id来操作相关对象。在处理CRUD请求时,都天真地默认只有有权限的用户才知道这个入口,进而才能操作相关对象,因此就不再校验权限了。可悲剧的是大多数对象的ID都被设置为自增整型,所以攻击者只要对相关id加1、减1、直至遍历,就可以操作其他用户所关联的对象了。

修复方案:

1、最正规的方案:把权限的控制转移到数据接口层中,避免出现select/update/delete … where addressID=#addressID#的SQL语句,使用select/update/delete… where addressID=#addressID# and ownerId=#userId#来代替,要求web层在调用数据接口层的接口时额外提供userid,而这个userid在web层看来通常只能通过seesion来取到,以防用户造假。但这个方案的缺陷在于实现起来要改动底层的设计,所以不适合作为修复方案,更适合作为在最开始设计时的统一控制方案。

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

另外的方法:

1、可对ID加密

2、使用UUID

3、每一个信息增加一个发布人的字段,修改的人必须与发布的人为同一个人才可以访问

 

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

修复方案:

只需要对url资源进行权限验证即可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148236.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VMware虚拟机ubuntu显示屏幕太小解决办法

    VMware虚拟机ubuntu显示屏幕太小解决办法使用VMware安装的ubuntu虚拟机的显示屏幕太小,可以通过在VMware里安装“VMwareTool”插件解决,安装步骤记录一下。1.更改ISO文件路径安装VMwareTool需要用到虚拟光驱,加载一个ISO文件,在安装的时候加载的是ubuntu安装文件“ubuntu-16.04.2-desktop-amd64.iso”,如果不更改这个加载路径,相当于在虚拟机

    2022年6月7日
    54
  • 易经六十四卦详解与应用_六十四卦推演方法

    易经六十四卦详解与应用_六十四卦推演方法文章目录六十四卦图卦象工具/原料方法/步骤注意事项六十四卦图卦象工具/原料一块钱的硬币 三枚方法/步骤第一,占卜前要把手洗干净,然后心里要虔诚,其他的事情不要胡思乱想,心里就想着自己要占卜问的事情。第二,取出三枚一元的硬币,有一元字体的为正面,花的那面为反面。然后将三枚硬币放在手中,双手合拢摇晃几下,最后开出来。结果的话有四种情况。三个全是正面的记作老阳——x,只有一个正面…

    2022年8月18日
    11
  • pycharm怎么更新包_python 开发web项目

    pycharm怎么更新包_python 开发web项目运行环境使用的是python2.5,想在项目中换成python3.6,安装完Python3.6后。打开Pycharm:File->Settings->找到project:*******->ProjectInterpreter,然后直接在下拉框里选择你已经安装的好的版本(只要在系统里安装好python版本,配置好环境变量,Pycharm会自动加载)。确认即可统一…

    2022年8月29日
    3
  • GBDT算法原理以及实例理解[通俗易懂]

    GBDT算法原理以及实例理解[通俗易懂]【尊重原创,转载请注明出处】http://blog.csdn.net/zpalyq110/article/details/79527653  GBDT的全称是GradientBoostingDecisionTree,梯度下降树,在传统机器学习算法中,GBDT算的上TOP3的算法。想要理解GBDT的真正意义,那就必须理解GBDT中的GradientBoosting和Decision…

    2022年10月12日
    3
  • Idea激活码最新教程2023.1.1版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2023.1.1版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2023 1 1 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2023 1 1 成功激活

    2025年5月26日
    2
  • Hadoop学习之编译eclipse插件

    Hadoop学习之编译eclipse插件

    2022年1月28日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号