剃刀和防伪

时间:2018-01-11 03:12:26

标签: c# asp.net-mvc razor csrf

我最近在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攻击?

1 个答案:

答案 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,需要您提及的帮助程序。