ASP.NET Core利用UrlFirewall對請求進行過濾的方法示例
一. 前言
UrlFirewall 是一個開源、輕便的對http請求進行過濾的中間件,可使用在webapi或者網(wǎng)關(guān)(比如Ocelot),由我本人編寫,并且開源在github:https://github.com/stulzq/UrlFirewall (本地下載)
二.UrlFirewall 介紹
UrlFirewall 是一款http請求過濾中間件,可以和網(wǎng)關(guān)(Ocelot)搭配,實現(xiàn)屏蔽外網(wǎng)訪問內(nèi)部接口,只讓內(nèi)部接口之間相互通訊,而不暴露到外部。它支持黑名單模式和白名單模式,支持自定義http請求響應代碼。具有良好的擴展性,可自己實現(xiàn)驗證邏輯,從數(shù)據(jù)庫或者Redis緩存等介質(zhì)實現(xiàn)對規(guī)則的檢索。
三.使用
1.從Nuget添加組件到你的ASP.NET Core項目
Install-Package UrlFirewall.AspNetCore
2.配置DI
public void ConfigureServices(IServiceCollection services)
{
services.AddUrlFirewall(options =>
{
options.RuleType = UrlFirewallRuleType.Black;
options.SetRuleList(Configuration.GetSection("UrlBlackList"));
options.StatusCode = HttpStatusCode.NotFound;
});
services.AddMvc();
//...
}
3.配置中間件
UrlFirewall中間件的位置必須放在第一個
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//Configure url firewall middleware. Top most.
app.UseUrlFirewall();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
}
4.配置規(guī)則
根據(jù)步驟2,使用的Section名稱·UrlBlackList·我們在appsettings.json/appsettings.Devolopment.json文件中添加以下配置;
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"UrlBlackList": [
{
"Url": "/api/cart/add",
"Method": "All"
},
{
"Url": "/api/cart/del",
"Method": "Post"
},
{
"Url": "/api/cart/list",
"Method": "Get"
},
{
"Url": "/api/product/*",
"Method": "All"
}
]
}
Url 字段表示要攔截的http請求url,支持通配符*和?,*表示匹配任意個數(shù)任意字符,?表示匹配一個任意字符。Method表示http請求方法,All代表所有,還有Get Post Delete Put。
四.擴展
如果你想要實現(xiàn)自己的驗證邏輯,或者從數(shù)據(jù)庫、Redis緩存等介質(zhì)查詢、獲取數(shù)據(jù)來進行驗證;你可以實現(xiàn)IUrlFirewallValidator接口,然后調(diào)用AddUrlFirewallValidator方法替換默認實現(xiàn)即可。
示例:
services.AddUrlFirewall(options =>
{
options.RuleType = UrlFirewallRuleType.Black;
options.SetRuleList(Configuration.GetSection("UrlBlackList"));
options.StatusCode = HttpStatusCode.NotFound;
}).AddUrlFirewallValidator<CustomValidator>();
五.地址
源碼和Demo:https://github.com/stulzq/UrlFirewall (本地下載)
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
asp.net實現(xiàn)取消頁面表單內(nèi)文本輸入框Enter響應的方法
這篇文章主要介紹了asp.net實現(xiàn)取消頁面表單內(nèi)文本輸入框Enter響應的方法,結(jié)合實例形式分析了asp.net文本框Enter響應的原理與取消Enter響應的相關(guān)實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11
ASP.NET網(wǎng)站使用Kindeditor富文本編輯器配置步驟
首先下載編輯器然后部署編輯器最后在網(wǎng)頁中加入(ValidateRequest="false")引入腳本文件,具體配置步驟如下,有需求的朋友可以了解下哈2013-06-06
Microsoft Visual Studio 2017 for Mac Preview安裝使用案例分享
這篇文章主要為大家分享了Microsoft Visual Studio 2017 for Mac Preview安裝使用案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11
Asp.NET 隨機碼生成基類(隨機字母,隨機數(shù)字,隨機字母+數(shù)字)
對于需要用asp.net 字母,隨機數(shù)字,隨機字母+數(shù)字生成隨機碼的朋友用的到2008-11-11
Asp.Net Core輕量級Aop解決方案:AspectCore
這篇文章主要介紹了Asp.Net Core輕量級Aop解決方案:AspectCore,需要的朋友可以參考下2017-06-06
asp.net中調(diào)用Office來制作3D統(tǒng)計圖的實例代碼
這篇文章介紹了asp.net中調(diào)用Office來制作3D統(tǒng)計圖的實例代碼,有需要的朋友可以參考一下2013-11-11

