web应用水平越权(横向越权)和垂直权限(纵向越权)问题

web应用水平越权(横向越权)和垂直权限(纵向越权)问题水平越权(横向越权)和垂直权限(纵向越权)问题

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

1. 基本概念

1.1 横向越权

横向越权:横向越权指的是攻击者尝试访问与他拥有相同(级别或角色)权限的用户的资源。

1.2 纵向越权

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

1.3 如何防止横向越权漏洞

可通过建立用户和可操作资源的绑定关系,用户对任何资源进行操作时,通过该绑定关系确保该资源是属于该用户所有的。

对请求中的关键参数进行间接映射,避免使用原始关键参数名,比如使用索引1代替id值123等。

防止水平越权的关键是避免用户修改自身的身份标识为其它用户的身份标识。

1.4 如何防止纵向越权漏洞

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

防止垂直越权的关键是禁止用户自己修改自身的角色或增加自身的权限。

2. 权限控制的四个层面

权限提现在四个层面,分别是增加、删除、修改和查询。

2.1 增加数据

增加数据需要的权限控制主要体现在跨权限的增加数据的控制。

增加业务数据具有变动部分,也有不可变部分(比如用户自身的身份标识),主要控制不可变部分。一种思路是该部分由后台进行填充,不依赖于前端传入,或者对前端传入的数据做严格校验。

增加基础数据(比如用户和角色的对应关系,角色和权限的对应关系等)的权限控制,严格判断用户角色和权限,禁止越权添加。

添加请求的身份标识严格校验或者从后端状态中获取,避免前端传入任意身份标识。

2.2 删除数据

对于删除数据,验证校验删除的数据是否在权限范围内。

删除请求的身份标识严格校验或者从后端状态中获取,避免前端传入任意身份标识。

2.3 修改数据

对于修改数据,验证校验修改的数据是否在权限范围内。

修改请求的身份标识严格校验或者从后端状态中获取,避免前端传入任意身份标识。

2.4 查询数据

对于查询数据,一般根据用户标识进行关联查询即可控制在权限范围内。

查询请求的身份标识严格校验或者从后端状态中获取,避免前端传入任意身份标识。

3. 权限控制技术方法

  • web层检查发起请求的用户权限,比如从session信息中获取;
  • 通过增加token校验的方式,验证页面提交的不可变信息是否被篡改;
  • 数据库表增加ownerId字段,增删改查询时加上其作为where语句条件(即每一个信息增加一个发布人的字段,修改的人必须与发布的人为同一个人才可以访问);
  • 对所有url资源进行权限验证;
  • 对所有的数据访问进行权限验证;
  • 记录完善的审计日志;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • 协程概述

    协程概述协程不是进程,也不是线程,它就是一个函数,一个特殊的函数——可以在某个地方挂起,并且可以重新在挂起处继续运行。所以说,协程与进程、线程相比,不是一个维度的概念。一个进程可以包含多个线程,一个线程也可以包含多个协程,也就是说,一个线程内可以有多个那样的特殊函数在运行。但是有一点,必须明确,一个线程内的多个协程的运行是串行的。如果有多核CPU的话,多个进程或一个进程内的多个线程是可以并行运行的,但是一…

    2022年7月27日
    1
  • Linux常用命令大全(非常全!!!)

    Linux常用命令大全(非常全!!!)Linux常用命令大全(非常全!!!)最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考:系统信息arch显示机器的处理器架构uname-m显示机器的处理器架构uname-r显示正在使用的内核版本d…

    2022年4月27日
    33
  • idea2022.01.21激活码(注册激活)2022.02.15[通俗易懂]

    (idea2022.01.21激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~9A…

    2022年4月1日
    48
  • 要引入java吸管工具[通俗易懂]

    要引入java吸管工具

    2022年1月17日
    47
  • 8psk带宽计算_采用8PSK系统传输4800bps数据。 (1)信道带宽的最小理论值是多少? mpsk 信号可以采用差…

    8psk带宽计算_采用8PSK系统传输4800bps数据。 (1)信道带宽的最小理论值是多少? mpsk 信号可以采用差…码元速率为boud=4800/log8=1600Boud/s最小带宽为boud/2=1600/2=800HZ带宽不变,信息加倍,可以采用每个码元所含信息量为4bit的调制方式,如采用16QAM调制。带宽不变的情况下,信息速率增大,误码率相同的情况下,要增加信号的发送功率。给分吧,谢谢如同模拟调制,数字调制也可分为频率调制、相位调制和幅度调制,性能各有千秋。由于频率、相位调制对噪声抑制更好,因此成为…

    2022年10月10日
    3
  • widthstep

    widthstep简言之:image->widthStep=(int(image->width*image->nChannels+3)/4)*4,既图像宽度*图像通道数,再向上取最近的4的倍数,因为每行是按4的倍数分配内存的做直方图计算时要注意空的内存。灰度图的width和widthstep不相等。前者是表示图像的每行像素数,后者指表示存储一行像素需要的字节数。  在Op

    2022年6月12日
    41

发表回复

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

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