首页 > 其他分享 >【web安全】横向越权,纵向越权

【web安全】横向越权,纵向越权

时间:2024-09-05 09:26:06浏览次数:4  
标签:请假 web 前端 纵向 接口 学生 权限 越权

纵向越权

纵向越权,‌也称为垂直越权,‌是指不同级别或不同层次的用户、‌系统或组件之间,‌未经授权地访问或操作更高级别或更低级别的资源或数据。‌这通常涉及到权限的升级或降级使用。‌

示例:

在一个学校管理系统中,老师可以审批班级学生的请假申请。学生可以为自己提交请假申请,这时老师的权限大于学生的权限。

如果某位学生使用自己的账号审批了请假申请,那么便发生了纵向越权。

横向越权

横向越权,‌也称为水平越权,‌是指同一级别或同一层次的用户、‌系统或组件之间,‌未经授权地访问或操作其他用户、‌系统或组件的资源或数据。‌简单来说,‌就是同一层级的不同用户之间互相访问了对方没有权限访问的数据或资源。‌

示例:

在一个学校管理系统中,老师可以审批班级学生的请假申请。学生可以为自己提交请假申请,这时学生之间的权限相同,但只能为自己提交申请。

如果某位学生使用自己的账号为其他学生提交了请假申请,那么便发生了横向越权。

为什么会发生越权

对于学生来说,我登录自己的账户,明明只能看见提交申请的入口,根本没有审批的入口,怎么会发生越权了。

通常,一个Web系统由前端(展示层)和后端(数据处理层)组成。前端只能控制用户看见什么,确不能控制用户针对某个接口发起请求,尤其现在前后端分离的大环境下,后端api相对之前更容易暴露在人们的视野中。所有稍微了解下,都可以做到对api发起攻击。于是,学生便可以轻易的对审批接口发起请求。

对于后端,所有来自外部的请求都要做校验,这些校验不局限于越权,常见的sql注入,xss,xml注入等等都需要后端对请求进行把关。

比如:我随意对一个api发起调用,前端限制某个参数的长度是36,数据库也是36,那么我输入一个40长度的数据,数据库一定会报错,或者引起其他的异常。

总之一句话,用户身份不可信,用户输入不可信。这是我们做安全防护的基本理念。

越权防护

对于纵向越权来说,我们需要对每个接口划分权限,比如审批接口只能由老师的角色调用,学生不可以调用审批接口,这种一般都可以做公共的配置,来决定每个角色的调用权限。

对于横向越权来说,大部分只能在每个接口中防护,例如申请接口,判断学生身份和要请假的学生是不是同一人,或者不需要请假的学生,谁登录就为谁请假。这些需要日常编码中注意校验。

总结

我们只要记住,前端什么样,后端就什么样。前端某个字段输入36长度,只能是字母数字,后端也要相同的校验。前端不能输入 or (1 = 1),<a href=""/>,后端也不能。前端学生看不到审批,后端也不能操作。这样基本上会解决大部分的安全问题。

 

 

 

标签:请假,web,前端,纵向,接口,学生,权限,越权
From: https://blog.csdn.net/mrk_java/article/details/141885176

相关文章

  • 解决在.net8 WebAPI中 AOP 使用AbstractInterceptorAttribute
    在网上找了许多例子但是放在.net8就不好使了比如在Program中配置IInterceptor或者 services.ConfigureDynamicProxy,网上说的对但是也不全对//通过单元测试(MSTest)//创建IServiceCollectionIServiceCollectionservices=newServiceCollection(); 是能调用Abstr......
  • Go - Web Application 5
    ProcessingformsWe’regoingtoaddanHTMLformforcreatingnew snippets.Theformwilllookabitlikethis:Thehigh-levelflowforprocessingthisformwillfollowastandardPost-Redirect-Get patternandwillworklikeso:1.Theuserisshownthe......
  • 使用AI写WebSocket知识是一种怎么样的体验?
    一、WebSocket基础知识1.WebSocket概念1.1为什么会出现WebSocket一般的Http请求我们只有主动去请求接口,才能获取到服务器的数据。例如前后端分离的开发场景,自嘲为切图仔的前端大佬找你要一个配置信息的接口,我们后端开发三下两下开发出一个RESTful架构风格的API接口,只有当......
  • java 使用WebSocket 功能实现
    java使用WebSocket功能实现我整理的一些关于【架构设计】的项目学习资料+视频(附讲解~~)和大家一起分享、学习一下: https://d.51cto.com/bLN8S1实现Java直播弹幕功能1.引言本文将教会一位刚入行的小白如何实现Java直播弹幕功能。直播弹幕是指在直播过程中,观众可以发送实时弹幕......
  • Go - Web Application 4
    HowmiddlewareworksInfact,we’reactuallyalreadyusingsomemiddlewareinourapplication—the http.StripPrefix()functionfromservingstaticfiles,whichremovesaspecificprefixfrom therequest’sURLpathbeforepassingtherequestontothefi......
  • 基于Javaweb实现的物流管理系统设计与实现(源码+数据库+论文+部署+文档+讲解视频等)
    文章目录1.前言2.系统演示录像3.论文参考4.代码运行展示图5.技术框架5.1SpringBoot技术介绍5.2Vue技术介绍6.可行性分析7.系统测试7.1系统测试的目的7.2系统功能测试8.数据库表设计9.代码参考10.数据库脚本11.找我做程序,有什么保障?12.联系我们1.前......
  • VSCode Webview 插件开发的模板的踩坑记录
    问题CSP:refusedxxxxxx常见的几类报错(打开开发者工具,在控制台就会自动输出)refusedtoapplyinlinestylebecauseitviolatesthefollowingContentSecurityPolicydirectivexxxxxxrefusedtoloadthescript''becauseitviolatesthefollowingContentSecuri......
  • 动态引入模块:Webpack require.context 的灵活运用
    require.context是一个非常有用的WebpackAPI,它允许我们在编译时动态地引入模块。这个功能在一些场景下非常有用,比如需要动态加载模块、实现国际化、主题切换等功能时会经常用到。require.contextAPI说明官方文档:依赖管理|webpack中文文档首先,让我们了解一下require......
  • JavaWeb
    JavaWeb1.Servlet<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="......
  • C# WebSocket高并发通信阻塞问题
    项目上遇到使用WebSocket超时问题,具体情况是这样的,OTA升级过程中,解压zip文件会有解压进度事件,将解压进度通过进程通信传给另一进程,通信提示超时异常小伙伴堂园发现大文件使用Zip解压,解压进度事件间隔竟然是1ms,简直超大频率啊但是,解压事件超频也不应该通信异常啊,于是我通过1ms定......