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

权限漏洞:水平权限漏洞、垂直权限漏洞水平权限漏洞是指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资源进行权限验证即可。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • singletask和onNewintent

    singletask和onNewintent当activity属性设置为singletask时,如果按home键,然后重新启动该activity,理应走到onNewIntent()中去,但是在搞music时发现并非如此,虽然mediaplaybackactivity设置为singletask,但是当按home键后,如果再次通过playlistactivity启动,仍走的是onresume。这样新的intent就无法传过来。修

  • 机器学习框架简述

    机器学习框架简述机器学习框架意味着一个能够整合包括机器学习算法在内的所有机器学习的系统或方法,使用户最有效的使用它们。具体来讲,这包括数据表示与处理的方法、表示和建立预测模型的方法、评价和使用建模结果的方法。在所有可用的机器学习框架中,着重于迭代算法和交互处理的框架被公认为是最好的,因为这些特性可以促进复杂预测模型估计和研究人员与数据间的良好交互。当下,优秀的机器学习框架依旧需要包含大数据功能…

  • 学习笔记 python取余[通俗易懂]

    学习笔记 python取余[通俗易懂]python中的取余运算其实就是取模运算,所谓取模运算,就是计算两个数相除之后的余数,符号是%。如a%b就是计算a除以b的余数。用数学语言来描述,就是如果存在整数n,其中0<=|m|<|b|使得a=n*b+m,那么a%b=a‐n*b=m其中n=a/b,然后对n进行向下取整,最后得到n取模运算的两个操作数都必须是整数,可以是负整数,但是b不可以是0,因为被除数不能为0假设变量:a=10,b=20;那么b%a输出结果0…

  • 邓白氏编码申请流程(最新)「建议收藏」

    邓白氏编码申请流程(最新)「建议收藏」1.公司做医疗行业APP开发,公司的苹果账号是个人账户级别,不能发布医疗类APP(PLA1.2)。需要升级到公司级别,联系了苹果客服400-670-1855,苹果的客服大部分的人的普通话都够呛,反正能理解意思,你一定要说你就是老板,报你老板的名字,然后客服给回复了一封邮件 按照邮件如实给苹果回复邮件即可(没有邓白氏编码是不行的)。然后后续的升级方法步骤就不赘述了,苹果客服会一步步提示你的,…

    2022年10月23日
  • 华为交换机不同网段互访_华为三层交换机实现不同vlan,不同网段的互通

    华为交换机不同网段互访_华为三层交换机实现不同vlan,不同网段的互通实验任务:1.不同vlan,不同网段实现互通;2.路由AR11用默认路由配置;3.LSW8实现三层交换机功能;如下华为拓扑图:配置思路:1.将LSW8看成一个路由器,LSW8下面连接(LSW7和LSW6)的设备都看一个pc,这样就成两个路由互联,下面各接一个pc这样只需让左边的PC7和右边的PC8互通即可搞定:如下图:2.LSW8是三层交换机,先不看192.168.6.0网段和192.168.7….

  • docker结构框架图

    docker结构框架图

发表回复

您的电子邮箱地址不会被公开。

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