这篇短文中,我将向您介绍如何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);}
部分禁用
如果您希望仅禁用特定方法或页面模型的验证,包括如下两个方法:
在Startup类的ConfigureServices方法进行配置,不过要提供页面的路径:
public void ConfigureServices(IServiceCollection services)
{services.AddMvc().AddRazorPagesOptions(opotions =>{opotions.Conventions.AddPageApplicationModelConvention("/demo",pageApplicationModel => pageApplicationModel.Filters.Add(new IgnoreAntiforgeryTokenAttribute()));});}在此处,我们禁用了 demo 页面的防伪令牌验证。
在PageModel上面使用标记:
[IgnoreAntiforgeryToken(Order = 1001)]
public class DemoModel : PageModel{
public void OnPost() {}}ValidateAntiForgeryToken标记默认的Order属性为1000,因此IgnoreAntiforgeryToken属性需要一个更高的序号。
上面我们已经说过了禁用防伪令牌验证不会阻止生成隐藏字段或cookie,所以需要禁用FormTagHelper生成令牌。
<form method="post" asp-antiforgery="false"></form>
关于这个话题就介绍完了,如果您感兴趣,不防测试一下。
相关文章:
.NET Core 2.0 正式发布信息汇总
.NET Standard 2.0 特性介绍和使用指南
.NET Core 2.0 的dll实时更新、https、依赖包变更问题及解决
.NET Core 2.0 特性介绍和使用指南
Entity Framework Core 2.0 新特性
体验 PHP under .NET Core
.NET Core 2.0使用NLog
升级项目到.NET Core 2.0,在Linux上安装Docker,并成功部署
解决Visual Studio For Mac Restore失败的问题
ASP.NET Core 2.0 特性介绍和使用指南
.Net Core下通过Proxy 模式 使用 WCF
.NET Core 2.0 开源Office组件 NPOI
ASP.NET Core Razor页面 vs MVC
Razor Page–Asp.Net Core 2.0新功能 Razor Page介绍
MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例
.NET Core 2.0迁移技巧之web.config配置文件
asp.net core MVC 过滤器之ExceptionFilter过滤器(一)
ASP.NET Core 使用Cookie验证身份
ASP.NET Core MVC – Tag Helpers 介绍
ASP.NET Core MVC – Caching Tag Helpers
ASP.NET Core MVC – Form Tag Helpers
ASP.NET Core MVC – 自定义 Tag Helpers
ASP.NET Core MVC – Tag Helper 组件
原文地址:https://www.cnblogs.com/tdfblog/p/disable-antiforgery-token-validation-in-asp-net-core-razor-page.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注