博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net core安全事项(下)
阅读量:4036 次
发布时间:2019-05-24

本文共 1256 字,大约阅读时间需要 4 分钟。

  • 越权

越权是非常严重的安全漏洞,通常状态是开发人员对请求的限制逻辑不严格导致的。

如果系统中有角色的概念,越权可能出现不同角色间的越权和同角色间的越权。

相同角色:

A用户,B用户是相同的角色。

A用户和B用户都可以调用 /photo/{id}。

这个url,如果在后端不判断这个phtoto的id属于那个用户的,就很容易造成越权,这里只要A用户登录验证通过后,就可以用这个api,换id来请求到B用户的照片信息,这种情况下通常在后端要把id和用户id都当成查询条件,去库中查询,这样就能有效防止越权。

其实就是加了一层过滤,是谁的数据。如果数据归属权有层级,交叉,那将是更复杂的控制,不过这些都是业务逻辑决定的。

[HttpGet("/photo/{id}")]        public IActionResult GetPohot(int id)        {            //数据集全            var photos = new List
{ new {ID=1, Name="第一张",User="A"}, new {ID=2, Name="第二张",User="B"}, new {ID=3, Name="第三张",User="A"}, new {ID=4, Name="第四张",User="B"} }; //越权 //return new JsonResult(photos.SingleOrDefault(s => s.ID == id)); //增加数据所属条件 return new JsonResult(photos.SingleOrDefault(s => s.ID == id && s.User == User.Identity.Name)); }

有时,我们很容易忽略一些数据所有权,比较上传的文件,图片,属于那个用户,可能在表里对文件,图片和用户作了绑定,但当前端访问或下载这个文件,图片时,并没有去对文件,图片所有权作个判断,从而造成越权风险。

不同角色:

A角色,B角色有不同的功能

很多时候,不同的角色有不同的功能,这些功能是通过菜单在UI上显示,当不同的角登录后,只能看见属于自己的功能,如果不在服务端对每个api和角色加以映射判断(api层的权限设定很重要),就很容易造成越权,虽然A角色在UI上看不到B角色的功能菜单,一但A记下B角角功能的url,也会很顺利的访问到B角色的功能。

还有一个就是权限控制模块的处理,如果多个角色都有不同的权限控制权限,一定要设置好权限的范围控制,权限低的不能添加或修改成权限高的用户,负责后果很严重,老板很生气。

转载地址:http://eiudi.baihongyu.com/

你可能感兴趣的文章
除了负载均衡,Nginx还可以做很多,限流、缓存、黑白名单
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux phy驱动初始化2
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
2020年终总结
查看>>
linux内核学习(4)建立正式内核的页式内存映射, 以x86 32位模式为例
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(五):Image的各种姿势
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>