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资源进行权限验证;
  • 对所有的数据访问进行权限验证;
  • 记录完善的审计日志;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

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

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

(0)


相关推荐

  • 数据库怎么创建学生表_设计数据库,创建数据库和数据表

    数据库怎么创建学生表_设计数据库,创建数据库和数据表知识点:数据库表的相关概念、创建数据库表的方法、设计数据库表、向数据库表中插入数据、建立不同数据库表之间的关系、删除数据库表。1、数据表相关的一些概念1.1数据库里的数据是如何保存的?数据库到底是怎么存储数据的?比如要把学生信息存储到数据库里,能把学生塞进数据库吗?肯定是把学生的数据信息抽象出来,把一些重要信息以文字或数字的形式保存到数据库中去。…

  • MongoDB(两)mongoDB基本介绍

    MongoDB(两)mongoDB基本介绍

  • ieee754标准一个浮点数由什么组成_某数采用ieee754单精度浮点数格式

    ieee754标准一个浮点数由什么组成_某数采用ieee754单精度浮点数格式浮点数(Floating-pointNumber)是对实数的一种近似表示,由一个有效数字(即尾数)加上幂数来表示,通常是乘以某个基数的整数次幂得到。以这种表示法表示的数值,称为浮点数。

    2022年10月22日
  • CSS样式表的使用

    CSS样式表的使用在用html5写网页的时候,结合CSS能够让页面更美观。由于只在做课程设计和实习的时候使用过,并没有系统的学习过,使得自己对于CSS的使用一直处于能用,但是容易弄混的阶段。为了弄清楚CSS样式表的使用,特地看书系统学习,现总结如下:CSS是通过选择器对不同的HTML标签进行控制,从而实现各种效果。常用的CSS选择器有标签选择器、类别选择器、id选择器。标签选择器的使用HTML网页是由很…

  • 使用栈实现表达式求值

    使用栈实现表达式求值任何一个表达式都是由操作数,运算符,界限符组成的。操作数即是参加运算的数值或者变量,运算符则是加减乘除等组成,为简单起见,这里只实现加减乘除的运算,而常见的界限符则是左右括号和终止符。在运算过程中,要判断两个先后出现的运算符之间的优先顺序。为了实现算法,设置两个工作栈:用于存储运算符的栈opter,以及用于存储操作数及中间结果的栈opval。算法基本思想如下:(1)首先将操作数栈opv

  • pip更新命令以及使用清华镜像快速安装OpenCV-python

    pip更新命令以及使用清华镜像快速安装OpenCV-pythonpip更新命令以及使用清华镜像快速安装OpenCV-python1.pip更新:首先尝试使用pipinstallOpenCV-python进行安装,如果安装出现这种情况:则使用以下命令: python-mpipinstall-U–force-reinstallpip2.使用清华镜像快速安装OpenCV-python如下命令: pipinstallopencv…

发表回复

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

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