ASP中的防伪令牌.NET核心



我在一个Razor页面项目中工作。在ASP。NET核心,@Html.AntiForgeryToken()应用于防止跨站点请求伪造(XSRF/CSRF(攻击。

我读了一篇关于它的文章:https://www.red-gate.com/simple-talk/development/dotnet-development/anti-forgery-validation-asp-net-core/

只要处理POST的控制器代码双重检查它是否接收到名为__RequestVerificationToken的隐藏字段和同名cookie,这种防御策略就会起作用

通过使用poster,我可以简单地复制cookie值和防伪造令牌,并将其附加到请求中,这样我就可以在不访问页面的情况下发布。cookie和令牌可以重复使用。

我的问题是,如何防止用户/黑客在不访问页面的情况下调用处理程序/控制器,并确保令牌只能使用一次?

我必须为此编写自己的解决方案吗?或者微软已经提供了解决方案?

防目标令牌可防止csrf攻击。它通过拒绝只包含cookie的发布请求来做到这一点。如果攻击者可以访问防伪造令牌,那么它就结束了。这就是为什么当您登录时令牌必须更改,而当您注销时它必须无效。它不一定需要针对每个请求进行更改。

https://owasp.org/www-community/Anti_CRSF_Tokens_ASP-NET

有很多策略。Microsoft不建议您将令牌添加到Cookie集合中,但如果您添加了令牌,则必须使用HTTPS。正如您所知,cookie在每个请求中都是公开的。您可以使用HttpOnly和Secure来增强它们。但是如果您添加HttpOnly,您就无法自己读取它。

更好的方法是使用头,因为在请求结束后,头不会持久存在。

至于微软,这里有一个很好的资源:在这里输入链接描述

最新更新