我最近在Microsoft doc(https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery)上发布了以下注释:
Razor页面会自动受到XSRF / CSRF的保护。您不必编写任何其他代码。有关详细信息,请参阅XSRF / CSRF和Razor页面。
指向其他页面(https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/index?tabs=visual-studio#xsrf),其中包含:
您不必为防伪验证编写任何代码。防伪令牌生成和验证自动包含在Razor Pages中。
我在我的ASP.NET MVC应用程序中使用Razor,并使用AntiForgeryToken助手保护我的表单。由于Antiforgery令牌相互验证的方式(隐藏字段+ cookie),我的用户必须允许在网站上使用Cookie。
我现在对文档中的内容感到困惑,因为它似乎表示在使用Razor时我不需要使用@Html.AntiForgeryToken()
助手或[ValidateAntiForgeryToken]
属性??< / p>
作为一个额外的问题,有没有办法在不使用cookie的情况下保护我的网站免受CSRF攻击?
答案 0 :(得分:2)
阅读帖子中的第一个链接(https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery)我找到了解释:
ASP.NET Core使用ASP.NET Core实现反请求伪造 数据保护堆栈。
在ASP.NET Core MVC 2.0中,FormTagHelper会注入防伪标记 用于HTML表单元素。
对于旧版本的ASP.NET MVC,需要您提及的帮助程序。