【发布时间】:2009-10-31 18:16:29
【问题描述】:
我了解 ASP.NET MVC 中的 AntiForgeryToken 功能确实可以防止跨站点攻击。
但是,它会阻止在 POST 之前更改表单值吗?
例如,恶意攻击者可能会发现评级页面始终包含一个包含已评级实体 ID 的隐藏字段,并创建 POST 请求以人为地对他自己的所有实体进行高评级。
确保 GET 和 POST 之间的表单值没有更改的首选方法是什么?
【问题讨论】:
标签: asp.net-mvc security
我了解 ASP.NET MVC 中的 AntiForgeryToken 功能确实可以防止跨站点攻击。
但是,它会阻止在 POST 之前更改表单值吗?
例如,恶意攻击者可能会发现评级页面始终包含一个包含已评级实体 ID 的隐藏字段,并创建 POST 请求以人为地对他自己的所有实体进行高评级。
确保 GET 和 POST 之间的表单值没有更改的首选方法是什么?
【问题讨论】:
标签: asp.net-mvc security
AntiForgeryToken 可防止恶意网站诱使用户使用与原始表单相同的表单并将其发布到原始站点。它不会阻止您描述的场景。以下是攻击者如何继续绕过令牌:
正如您所看到的,与您没有使用 AntiForgeryToken 的唯一区别是黑客需要发送一个额外的 GET 请求来读取令牌的值。
除了验证提交表单的用户(我想为了投票用户必须经过身份验证)不是该表单的所有者之外,绝对没有办法阻止攻击者修改隐藏字段的值他投票支持的实体 ID。
【讨论】: