ASP.NET Core Razor页面禁用防伪令牌验证
這篇短文中,我將向您介紹如何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 組件
ASP.Net Core Razor 頁面路由
原文地址:https://www.cnblogs.com/tdfblog/p/disable-antiforgery-token-validation-in-asp-net-core-razor-page.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的ASP.NET Core Razor页面禁用防伪令牌验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ray框架QA
- 下一篇: asp.net ajax控件工具集 Au