彭小盛

又一个WordPress站点

Core Razor页面禁用防伪令牌验证 ASP.NET-DotNet

Core Razor页面禁用防伪令牌验证 ASP.NET-DotNet
(点击上方蓝字一支钢枪 ,可快速关注我们)
来源:Sweet-Tangwww.cnblogs.com/tdfblog/p
在这篇文中将向您介绍如何ASP.NET Core Razor页面中禁用防伪令牌验证。
Razor页面是ASP.NET Core 2.0中增加的一个页面控制器框架,用于构建动态的、数据驱动的网站;支持跨平台开发,可以部署到Windows,Unix和Mac操作系统。
跨站点请求伪造(也称为XSRF或CSRF)是对Web托管应用程序的攻击,因为恶意网站可能会影响客户端浏览器和浏览器信任网站之间的交互。
这种攻击是完全有可能的飘逸之旅 ,因为Web浏览器会自动在每一个请求中发送某些身份验证令牌到请求网站。
这种攻击形式也被称为 一键式攻击 或 会话控制,因为攻击利用了用户以前认证的会话。
关于这个话题可以看我的另一篇博客:《ASP.NET Core 防止跨站请求伪造(XSRF/CSRF)攻击》。邓楚涵
Razor页面被设计为默认启动防跨站请求伪造攻击的,防伪令牌生成和验证被自动包含在Razor页面中。但是北语网院 ,在某些情况下,您可能想禁用它。
全局禁用
要在Razor页面中全局禁用防伪令牌验证庞雨熙,可以在Startup类的ConfigureServices方法中禁用:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddRazorPagesOptions(o=>
{
o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
});
}
这将关闭整个应用程序的防伪令牌验证。请注意,禁用防伪令牌验证不会阻止生成隐藏字段或cookie。它只是跳过验证过程。
我们知道防伪令牌是通过FormTagHelper生成的,好在ASP.NET Core MVC提供了全局设置标签助手的方法:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().InitializeTagHelper<FormTagHelper>((helper, context) => helper.Antiforgery = false);
}
所以全局禁用防伪令牌验证的完整代码如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddRazorPagesOptions(o=>
{
o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
}).InitializeTagHelper<FormTagHelper>((helper, context) => helper.Antiforgery = false);
}
部分禁用
如果您希望仅禁用特定方法或页面模型的验证,包括如下两个方法:
1、在Startup类的ConfigureServices方法进行配置,不过要提供页面的路径:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddRazorPagesOptions(opotions =>
{
opotions.Conventions.AddPageApplicationModelConvention("/demo",
pageApplicationModel => pageApplicationModel.Filters.Add(new IgnoreAntiforgeryTokenAttribute()));
});
}
在此处,我们禁用了 demo 页面的防伪令牌验证。
2、在PageModel上面使用标记:
[IgnoreAntiforgeryToken(Order = 1001)]
public class DemoModel : PageModel
{
public void OnPost()
{
}
}
ValidateAntiForgeryToken标记默认的Order属性为1000镇远门户网,因此IgnoreAntiforgeryToken属性需要一个更高的序号。
上面我们已经说过了禁用防伪令牌验证不会阻止生成隐藏字段或cookie,所以需要禁用FormTagHelper生成令牌。
<form method="post" asp-antiforgery="false">
</form>
关于这个话题就介绍完了,如果您感兴趣,不防测试一下。
看完本文有收获?请转发分享给更多人
关注「DotNet」山田光子,提升.Net技能


淘口令:复制以下红色内容,再打开手淘即可购买
范品社,使用¥极客T恤¥抢先预览(长按复制整段文案,打开手机淘宝即可进入活动内容)