我在我的网络应用程序上运行了代码质量分析工具,它警告我"跨站点请求伪造"在我的编辑和创建cshtml页面。
我通过实体框架模型自动生成代码来创建asp.net核心mvc Web应用程序。所以生成的表单适用于crud操作。 我运行了应用程序,发现在html源代码中生成了使用默认自动生成代码的隐藏令牌。但为什么质量工具会抱怨这个安全问题呢?
我尝试过以下但没有运气。我曾经在我的剃刀mvc页面中添加AntiforgeryToken。不知道如何在asp.net核心mvc中处理这种情况。我认为它会生成自动令牌而不添加任何特定代码。
<form asp-action="Edit" class="myForm">
@Html.AntiForgeryToken()
<-- my form elements -->
</form>
答案 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方法)。