asp.net-mvc - 如何保护 MVC RESTful Urls 免受黑客攻击?

标签 asp.net-mvc security restful-url

我最近读了一篇关于花旗集团黑客事件的有趣文章 http://www.nytimes.com/2011/06/14/technology/14security.html?_r=2&pagewanted=1&ref=technology

这让我开始思考,假设我的数据库中有一个包含 100,000 行敏感员工数据的表。该表有一个名为 Id 的主键,它是一个标识列。

员工可以登录 Web Portal 并通过 RESTful Url ({Controller}/{Action}/{Id}) 检索他的详细信息,例如/员工/详细信息/31

现在,是什么阻止我用 {Id} 参数替换任何参数(例如 Id = 32)和 检索员工 #32 的详细信息?花旗集团就是这样吗?

如何防止这种情况发生?即用户已经在门户网站上进行了身份验证 但未授权查看其他用户记录?我应该使用其他一些特定的“ token ”吗? 除了 Id 之外的客户?

最佳答案

这就是我在完全相同的情况下所做的,首先我声明了一个对象的扩展:

public static bool Editable(this EXPENSE_OBJ e)
{
    if (e != null)
    {
       UserRepository ur = new UserRepository();

       if (ur.CurrentUser().UserId == e.UserId) //Check if the user owns the claim
       {
           return true; //User owns the claim
       }
       else
       {
           return false; //User does not own the claim
       }

    }
}

然后在 Controller 中:

public ActionResult Details(id)
{
    var item = repo.GetItem(id);
    if(!item.Editable())
    {
         return View("InvalidURL");
    }

    ...

}

关于asp.net-mvc - 如何保护 MVC RESTful Urls 免受黑客攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6361095/

相关文章:

javascript - 模式表单上的更新按钮未在 MVC 中更新

asp.net-mvc - 没有 ajax 的 knockout 发布嵌套(主要细节)表格(普通表格发布)

security - 如果我不控制身份验证服务,如何使用不记名 token 保护 API 服务

java - 防御性复制帮助-数组直接存储-影响分析

json - 如何默认为 visual studio web api 返回 json

asp.net-mvc - MVC4 自定义 HandleErrorAttribute,未调用 global.asax 中的方法

c# - 一对多下拉列表建议

rest - REST API 设计中的授权和查询字符串

php - Symfony2 是否正确处理了 restful url,我应该使用 restful url 吗?

spring-boot - Spring 启动分页中的多个请求参数