闽公网安备 35020302035485号
<h1>Congratulations! You're a Winner!</h1>
<form action="https://good-banking-site.com/api/account" method="post">
<input type="hidden" name="Transaction" value="withdraw" />
<input type="hidden" name="Amount" value="1000000" />
<input type="submit" value="Click to collect your prize!" />
</form>
注意,表单的提交是向受信任的站点提交,而不是向恶意站点提交,这是 XSRF/CSRF中所描述的 "跨站" (5) 该请求在 www.good-banking-site.example.com 服务器上运行,使用用户的身份,可以使用经过身份验证用户进行任何事情的操作
<form method="post">
<!-- ... -->
</form>
生成的HTML如下:
<form method="post" asp-antiforgery="false">
<!-- ... -->
</form>
(2) 不使用FormTagHelper表单<!form method="post">
<!-- ... -->
</!form>
(3) 移除FormTagHelper标签builder.Services.AddAntiforgery(options =>
{
//防伪造系统用于在视图中呈现防伪造令牌的隐藏表单域的名称
options.FormFieldName = "AntiforgeryFieldname";
//防伪造系统使用的标头的名称。如果为 null,则系统仅考虑表单数据
options.HeaderName = "X-XSRF-TOKEN";
options.SuppressXFrameOptionsHeader = false;
});
四. 验证Token[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Index()
{
// ...
return RedirectToAction();
}
也可以使用AutoValidateAntiforgeryToken,该特性不会验证下列请求 GET,HEAD,OPTIONS,TRACE,它可以在应用程序中作为全局过滤器来触发防伪token验证,该特性可以应用于如下请求POST,PUT,PATCH,DELETE不需要将ValidateAntiForgeryToken特性提交到每个action上。//全局示例
//可以使用 IgnoreAntiforgeryToken 筛选器,给指定的Action(或控制器)无需防伪造令牌
builder.Services.AddControllersWithViews(options =>
{
// 堆代码 duidaima.com
options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
});
你也可以使用IgnoreAntiforgeryToken特性来忽视防伪token的验证。