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

权限漏洞:水平权限漏洞、垂直权限漏洞水平权限漏洞是指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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 地理坐标系与投影坐标系的区别和联系_我国常用的地理坐标系和投影坐标系

    地理坐标系与投影坐标系的区别和联系_我国常用的地理坐标系和投影坐标系1.基本概念平时开展GIS开发、研究、应用工作,总会接触到坐标系,也会遇到坐标转换的问题,如地理坐标系、投影坐标系等。地理坐标系是球面坐标,参考平面是椭球面,坐标单位是经纬度;投影坐标系是平面坐标系,参考平面是水平面,坐标单位是米、千米等。地理坐标系转换到投影坐标系的过程理解为投影,即将不规则的地球曲面转换为平面。…

    2025年7月17日
    4
  • win10多合一原版系统_win10简体中文64位16299.15多合一版本

    win10多合一原版系统_win10简体中文64位16299.15多合一版本镜像有点大估计压缩后也会超过4G,所以不会上传多合一版本介绍:包含以下版本windows10homewindows10homesinglelanguagewindows10homechinawindows10prowindows10educationwindows10enterprisewindows10s注意全部是64位的哈!!微云:http://url.cn/…

    2022年6月17日
    56
  • JDBC_5 DBUtils[通俗易懂]

    JDBC_5 DBUtils[通俗易懂]DBUtilscommons-dbutils是Apache组织提供的一个开源JDBC工具类库,封装了针对于数据库的增删改查操作APIQueryRunnerResulSetHandlerDbutils插入举例Connection conn = null; try { QueryRunner runner = new QueryRunner(); conn = JBBCUtils.getConnections3();

    2022年8月9日
    5
  • openwrt外网web管理_OpenAPI

    openwrt外网web管理_OpenAPI转自:http://odoodevelop.lofter.com/1.web模块注意,OpenERP模块中web部分用到的所有文件必须被放置在模块内的 static 文件夹里。这是强制性的,出于安全考虑。事实上,我们创建的文件夹CSS,JS和XML,仅仅是一个习惯。static文件夹oepetstore/static/css/petst

    2025年7月4日
    2
  • 国科大英语测试Unit3

    国科大英语测试Unit3TranslationandParaphrasingWithoutthe1968experimentsofKendall,FriedmanandTaylorattheStanfordLinearAcceleratorCenter(SLAC),quarkswouldhaveremainedameretheory,awill-o-wispwhoseexistencewasconfidentlypostulatedbutneverproven

    2022年6月3日
    43

发表回复

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

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