【发布时间】:2011-06-15 16:32:59
【问题描述】:
我最近读了一篇关于花旗集团黑客事件的有趣文章 http://www.nytimes.com/2011/06/14/technology/14security.html?_r=2&pagewanted=1&ref=technology
这让我想到,假设我的数据库中有一个包含 100,000 行的敏感员工数据表。该表有一个名为 Id 的主键,它是一个标识列。
员工可以登录 Web 门户并通过 RESTful Url ({Controller}/{Action}/{Id}) 检索其详细信息,例如/员工/详细信息/31
现在,是什么阻止我用 {Id} 参数替换任何参数(例如,Id = 32)和 检索员工 #32 的详细信息?花旗集团就是这样吗?
您如何防止这种情况发生?即用户已经在门户网站上进行了身份验证 但无权查看其他用户记录?我应该使用其他一些特定的“令牌”吗 除了 Id 之外的客户?
【问题讨论】:
-
只是为了补充一点,我已经实现了一个自定义的 Membership API,它工作正常,即员工使用 FormsAuthentication 登录并创建了 FormsAuthentication Ticket (Cookie)。然后,我检查 Employee 是否在 Roles、IsAuthenticated 等中,以便向 Controllers & Actions 授予权限。但是......这仍然不能阻止访问不属于他的数据,即因为我已获得授权和授权访问 /Employee/Details 我仍然可以替换任何(猜测的)EmployeeId?
-
您还可以加密和解密您在网址中使用的所有 ID,如果有人通过 Skype 将他的网址发送给某人,那么另一个人将能够使用它
标签: asp.net-mvc security restful-url