ASP.NET Core利用UrlFirewall對(duì)請(qǐng)求進(jìn)行過(guò)濾的方法示例
一. 前言
UrlFirewall 是一個(gè)開(kāi)源、輕便的對(duì)http請(qǐng)求進(jìn)行過(guò)濾的中間件,可使用在webapi或者網(wǎng)關(guān)(比如Ocelot),由我本人編寫(xiě),并且開(kāi)源在github:https://github.com/stulzq/UrlFirewall (本地下載)
二.UrlFirewall 介紹
UrlFirewall 是一款http請(qǐng)求過(guò)濾中間件,可以和網(wǎng)關(guān)(Ocelot)搭配,實(shí)現(xiàn)屏蔽外網(wǎng)訪問(wèn)內(nèi)部接口,只讓內(nèi)部接口之間相互通訊,而不暴露到外部。它支持黑名單模式和白名單模式,支持自定義http請(qǐng)求響應(yīng)代碼。具有良好的擴(kuò)展性,可自己實(shí)現(xiàn)驗(yàn)證邏輯,從數(shù)據(jù)庫(kù)或者Redis緩存等介質(zhì)實(shí)現(xiàn)對(duì)規(guī)則的檢索。
三.使用
1.從Nuget添加組件到你的ASP.NET Core項(xiàng)目
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中間件的位置必須放在第一個(gè)
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名稱(chēng)·UrlBlackList·我們?cè)赼ppsettings.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請(qǐng)求url,支持通配符*和?,*表示匹配任意個(gè)數(shù)任意字符,?表示匹配一個(gè)任意字符。Method表示http請(qǐng)求方法,All代表所有,還有Get Post Delete Put。
四.擴(kuò)展
如果你想要實(shí)現(xiàn)自己的驗(yàn)證邏輯,或者從數(shù)據(jù)庫(kù)、Redis緩存等介質(zhì)查詢、獲取數(shù)據(jù)來(lái)進(jìn)行驗(yàn)證;你可以實(shí)現(xiàn)IUrlFirewallValidator接口,然后調(diào)用AddUrlFirewallValidator方法替換默認(rèn)實(shí)現(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é)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
asp.net實(shí)現(xiàn)取消頁(yè)面表單內(nèi)文本輸入框Enter響應(yīng)的方法
這篇文章主要介紹了asp.net實(shí)現(xiàn)取消頁(yè)面表單內(nèi)文本輸入框Enter響應(yīng)的方法,結(jié)合實(shí)例形式分析了asp.net文本框Enter響應(yīng)的原理與取消Enter響應(yīng)的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
ASP.NET網(wǎng)站使用Kindeditor富文本編輯器配置步驟
首先下載編輯器然后部署編輯器最后在網(wǎng)頁(yè)中加入(ValidateRequest="false")引入腳本文件,具體配置步驟如下,有需求的朋友可以了解下哈2013-06-06
Microsoft Visual Studio 2017 for Mac Preview安裝使用案例分享
這篇文章主要為大家分享了Microsoft Visual Studio 2017 for Mac Preview安裝使用案例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
asp.net高效替換大容量字符實(shí)現(xiàn)代碼
每次替換完后,在下次替換時(shí)先排除這次替換的內(nèi)容,累加本次替換的內(nèi)容。2008-08-08
Web API身份認(rèn)證解決方案之Basic基礎(chǔ)認(rèn)證
本文詳細(xì)講解了Web API身份認(rèn)證解決方案之Basic基礎(chǔ)認(rèn)證,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
Asp.NET 隨機(jī)碼生成基類(lèi)(隨機(jī)字母,隨機(jī)數(shù)字,隨機(jī)字母+數(shù)字)
對(duì)于需要用asp.net 字母,隨機(jī)數(shù)字,隨機(jī)字母+數(shù)字生成隨機(jī)碼的朋友用的到2008-11-11
Asp.Net Core輕量級(jí)Aop解決方案:AspectCore
這篇文章主要介紹了Asp.Net Core輕量級(jí)Aop解決方案:AspectCore,需要的朋友可以參考下2017-06-06
asp.net中調(diào)用Office來(lái)制作3D統(tǒng)計(jì)圖的實(shí)例代碼
這篇文章介紹了asp.net中調(diào)用Office來(lái)制作3D統(tǒng)計(jì)圖的實(shí)例代碼,有需要的朋友可以參考一下2013-11-11

