如何使用Antiforgery技术防止.NET 4.0 MVC Web应用程序中的跨站点伪造攻击(重放攻击)

时间:2013-12-19 04:53:41

标签: asp.net-mvc csrf replay

为了防止.NET 4.0 MVC Web应用程序中的跨站点伪造攻击,我们使用@Html.AntiForgeryToken()每页生成CSRF令牌。使用相应控制器和操作中的框架提供的[ValidateAntiForgeryToken] api对每个请求处理完成令牌验证。

当来自客户端浏览器的请求被跟踪并从具有此跟踪数据的代理工具再次发送时,服务器应用程序接受它并且不显示验证错误。

跟踪数据将包含生成的令牌值(__RequestVerificationToken)和请求正文。

该应用程序启用了SSL(自签名)并以HTTPS格式托管。

工具可以从请求正文中复制经过验证的令牌,并且可以使用此旧令牌发送新请求。即经验证的令牌仍然是可用的。任何使无效或删除已生成的表单令牌的方法。

我们想知道,是否有任何其他安全措施需要考虑以防止跨站点攻击。

1 个答案:

答案 0 :(得分:2)

您描述的攻击是中间人/重播攻击,而不是CSRF攻击。 MVC的反CSRF API确实支持重放保护,但是设置它并非易事,并且听起来并不一定能解决您的问题。例如,如果我可以MITM您的应用程序,那么我可以完全访问您的身份验证cookie。我只能以你的身份登录,而且我不必担心我的CSRF令牌是否有效,因为我可以随时要求服务器为我生成新的有效令牌。

您尝试解决的确切方案是什么?