ASP.NET Core利用UrlFirewall对请求进行过滤的方法示例

发布时间:2022-04-16 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了ASP.NET Core利用UrlFirewall对请求进行过滤的方法示例脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一. 前言

UrlFirewall 是一个开、轻便的对http请求进行过滤的中间件,可使用在webapi或者网关(比如Ocelot),由我本人编写,并且开源在gIThubhttps://github.com/stulzq/UrlFirewall  (本地下载)

二.UrlFirewall 介绍

UrlFirewall 是一款http请求过滤中间件,可以和网关(Ocelot)搭配,实现屏蔽外网访问内部接口,只让内部接口之间相互通讯,而不暴露到外部。它支持黑名单模式和白名单模式,支持自定义http请求响应代码。具有良好的扩展性,可自己实现验证逻辑,从数据库或者redis缓存等介质实现对规则的检索。

三.使用

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.配置规则

根据步骤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,支持通配符*和?,*表示匹配任意个数任意字符,?表示匹配一个任意字符。Method表示http请求方法,All代表所有,还有Get Post Delete Put。

四.扩展

如果你想要实现自己的验证逻辑,或者从数据库、Redis缓存等介质查询、获取数据来进行验证;你可以实现IUrlFirewallValidator接口,然后调用AddUrlFirewallValidator方法替换默认实现即可。

示例:

services.AddUrlFirewall(options =>
{
 options.RuleType = UrlFirewallRuleType.Black;
 options.SetRuleList(Configuration.GetSection("UrlBlackList"));
 options.StatusCode = HttpStatusCode.NotFound;
}).AddUrlFirewallValidator<CustomValidator>();

五.地址

源码和Demo:https://github.com/stulzq/UrlFirewall (本地下载)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本宝典的支持。

脚本宝典总结

以上是脚本宝典为你收集整理的ASP.NET Core利用UrlFirewall对请求进行过滤的方法示例全部内容,希望文章能够帮你解决ASP.NET Core利用UrlFirewall对请求进行过滤的方法示例所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。