在这篇短文中,我将向您介绍如何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>
关于这个话题就介绍完了,如果您感兴趣,不防测试一下。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。