跨站点请求伪造Asp.net核心.cshtml页面

时间:2018-06-05 20:52:15

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

我在我的网络应用程序上运行了代码质量分析工具,它警告我"跨站点请求伪造"在我的编辑和创建cshtml页面。

我通过实体框架模型自动生成代码来创建asp.net核心mvc Web应用程序。所以生成的表单适用于crud操作。 我运行了应用程序,发现在html源代码中生成了使用默认自动生成代码的隐藏令牌。但为什么质量工具会抱怨这个安全问题呢?

我尝试过以下但没有运气。我曾经在我的剃刀mvc页面中添加AntiforgeryToken。不知道如何在asp.net核心mvc中处理这种情况。我认为它会生成自动令牌而不添加任何特定代码。

<form asp-action="Edit" class="myForm">
            @Html.AntiForgeryToken()
<-- my form elements -->
</form>

2 个答案:

答案 0 :(得分:1)

尝试添加方法=&#34;发布&#34;

<form asp-action="Edit" class="myForm" method="post">

答案 1 :(得分:0)

ASP .NET Core 2.2仅使用指定的POST方法自动在HTML标记<form/>(最终为@using (Html.BeginForm(..))中生成防伪令牌。您的表单将被默认为GET方法,因此在您的情况下不会生成防伪令牌。 ASP.NET Core应用程序不会为安全的HTTP方法(GET,HEAD,OPTIONS和TRACE)生成防伪令牌。可以在@ JamieD77之前提到的文章中找到完整的解释:Prevent Cross-Site Request Forgery (XSRF/CSRF) attacks in ASP.NET Core

有一些可能的情况:

  • 非API方案::推荐使用AutoValidateAntiforgeryToken。这样可以确保默认情况下不安全的HTTP动词(例如POST,DELETE,PUT和PATCH)动作受到保护。

  • API场景: 在这里,您还可以使用ValidateAntiForgeryToken阻止其他操作(例如GET方法)。