保存信息不会被网址更改所破坏

时间:2014-04-02 11:10:43

标签: asp.net asp.net-mvc-4

在某些网页或视图中,我的信息显示在表格中。列值呈现为链接。

问题:

  1. 当我将鼠标悬停在链接上时,浏览器底部会显示该网址。
  2. 当我点击链接时,我会显示URL中请求的资源的信息。 (www.someurl.com/Employee/67向我提供id = 67的员工的信息。)

    现在,此URL显示在浏览器中。如果您将URL更改为www.someurl.com/Employee/88,它会显示id = 88的员工信息,尽管登录用户不应该看到员工ID的信息88

  3. 这是严重的安全漏洞。

    我正在考虑采用可能的解决方案:

    应用程序级别的URL屏蔽

    对URL进行Base64编码以缩短和混淆它,这样用户就无法在URL中抛出值。

    @Html.AntiForgeryToken()ValidateAntiForgeryTokenValidation机制

    是否有更好,更安全的方法来解决这个问题?

3 个答案:

答案 0 :(得分:2)

签入控制器服务www.someurl.com/Employee/88如果当前经过身份验证的用户可以访问ID为88的员工,如果他没有,则抛出异常 - 无需掩盖网址。

答案 1 :(得分:2)

如果用户不应该能够看到ID为88的员工,那么他们就不应该看到ID为88的员工的信息。该URL或多或少无关紧要,在您的情况下只给他们一个明显的线索,告诉他们如何未经授权访问系统中的数据。

如果登录用户有权查看该数据,您需要一个适当的安全计划,其中数据仅通过业务层从数据库提供给UI。

答案 2 :(得分:1)

以下是我对您的首次安全漏洞的看法:

在发送时将您的ID与某些GUID或复杂结构混合,当您收到它时,从中取出您的ID,然后继续。 [你的掩饰想法]