在某些网页或视图中,我的信息显示在表格中。列值呈现为链接。
问题:
当我点击链接时,我会显示URL中请求的资源的信息。 (www.someurl.com/Employee/67向我提供id = 67的员工的信息。)
现在,此URL显示在浏览器中。如果您将URL更改为www.someurl.com/Employee/88,它会显示id = 88的员工信息,尽管登录用户不应该看到员工ID的信息88
这是严重的安全漏洞。
我正在考虑采用可能的解决方案:
应用程序级别的URL屏蔽
对URL进行Base64编码以缩短和混淆它,这样用户就无法在URL中抛出值。
@Html.AntiForgeryToken()
和ValidateAntiForgeryTokenValidation
机制
是否有更好,更安全的方法来解决这个问题?
答案 0 :(得分:2)
签入控制器服务www.someurl.com/Employee/88如果当前经过身份验证的用户可以访问ID为88的员工,如果他没有,则抛出异常 - 无需掩盖网址。
答案 1 :(得分:2)
如果用户不应该能够看到ID为88的员工,那么他们就不应该看到ID为88的员工的信息。该URL或多或少无关紧要,在您的情况下只给他们一个明显的线索,告诉他们如何未经授权访问系统中的数据。
如果登录用户有权查看该数据,您需要一个适当的安全计划,其中数据仅通过业务层从数据库提供给UI。
答案 2 :(得分:1)
以下是我对您的首次安全漏洞的看法:
在发送时将您的ID与某些GUID或复杂结构混合,当您收到它时,从中取出您的ID,然后继续。 [你的掩饰想法]