使用MVC防止Url操纵攻击?

Dan*_*Dan 11 security url asp.net-mvc

任何好的策略,代码片段等,以防止URL操作?

例如,我有这个URL,http://localhost/profile/edit/5id可以很容易地改为任何东西,因此人们可以编辑他们不应该的配置文件.

以下是我想到的一些想法,但它们都有缺点:

  1. 将我的系统更改为使用GUID主键 - 几乎不可能猜出键 - 但人们仍然可以从应用程序的某个部分获取GUID,然后在另一个URL中使用它.

  2. 使用TempData存储密钥 - 防止在以后使用时发送的URL.

  3. 在显示页面之前在控制器中执行检查 - 意味着您必须在任何地方执行"管理"代码以检查操作.

什么是最好的事情?其中一个或其他什么?

Mic*_*tum 18

3号是正确的做法.服务器端安全验证始终是您所需要的,因为这是您完全控制并可依赖的机制.

第一个是Obsc​​urity的安全性,如果有人意外地将他的URL发布到某个地方(就像人们在复制/粘贴链接时经常使用会话ID一样),您的"安全性"就会被破坏.

2号似乎是一个弱安全性 - 如果你经历麻烦,更好地实现适当的安全性.这也允许人们为页面添加书签.

  • 通过实现允许您将安全性作为一个方面应用于不同控制器/操作的属性,可以使(3)更容易.有关如何执行此操作的详细信息,请参阅我对此问题的回复. (5认同)