繁体   English   中英

ASP.NET MVC CSRF Anti-Forgery Tokens是否会过期?

[英]Do ASP.NET MVC CSRF Anti-Forgery Tokens expire?

我正在ASP.NET MVC 5应用程序中实现CSRF防伪保护。 特别是,我在ASP.NET网站上引用Mike Wasson描述的方法来保护响应AJAX请求的控制器方法,例如在WebAPI控制器中。 此方法使用AntiForgery.GetTokens方法生成基于用户的加密防伪标记,然后使用AntiForgery.Validate验证提交的标记属于当前用户。

我的问题是:这些令牌是否有生存时间? 它们会过期吗?如果有,它们有多长时间有用? 文档是关于这个主题的静音。

我不想在我的系统中允许非过期令牌。 此外,我希望在请求新令牌之前与客户端通信他们有多少时间。 如果需要,我可以使用FormsAuthentication.Encrypt实现过期令牌; 但是,如果AntiForgery类的方法已经过期,那么我想AntiForgery不必要的复杂性。

这个想法是每个易受攻击的HTTP POST生成两个令牌并直接发送到服务器。 因此,如果单击表单上的“提交”按钮,则会生成两个令牌:cookie和表单值,两者都基于用户凭据,在此处阅读(不错的书面文章): http:// www。 asp.net/mvc/overview/security/xsrfcsrf-prevention-in-aspnet-mvc-and-web-pages

实际可以过期的cookie令牌是冗余的,除了尝试匿名身份验证的情况之外,系统不需要。 例如,请参阅此处(第一个答案): MVC 2 AntiForgeryToken - 为什么对称加密+ IPrinciple?

但是,您的另一个令牌对攻击者来说是不可读的,并且每个新请求都会生成这些令牌。 因此,无需担心失效日期。

编辑 :实际上,这一切也可以在你所指的文章的评论部分阅读(Mike Wasson);)

您可以查看通过浏览器创建的cookie。 它们是没有过期的会话cookie。 这意味着当您关闭浏览器时,cookie将被删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM