微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net core安全事项(下)

 

 

  • 越权

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

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

  相同角色:

  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<dynamic>
            {
                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角色的功能

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

 

  想要更快更方便的了解相关知识,可以关注微信公众号   

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐