国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - Asp.Net Core安全防護-客戶端IP白名單限制

Asp.Net Core安全防護-客戶端IP白名單限制

2021-09-08 23:09UP技術(shù)控conan5566 ASP.NET教程

本篇展示了如何在ASP.NET Core應(yīng)用程序中設(shè)置IP白名單驗證的2種方式。有需要的朋友可以參考下

Asp.Net Core安全防護-客戶端IP白名單限制

前言

本篇展示了如何在ASP.NET Core應(yīng)用程序中設(shè)置IP白名單驗證的2種方式。

你可以使用以下2種方式:

  • 用于檢查每個請求的遠程 IP 地址的中間件。
  • MVC 操作篩選器,用于檢查針對特定控制器或操作方法的請求的遠程 IP 地址。

中間件

Startup.Configure方法將自定義 AdminSafeListMiddleware 中間件類型添加到應(yīng)用的請求管道。 使用 .NET Core 配置提供程序檢索到該安全,并將其作為構(gòu)造函數(shù)參數(shù)進行傳遞。

  1. app.UseMiddleware<AdminSafeListMiddleware>("127.0.0.1;192.168.1.5;::1"); 

中間件將字符串分析為數(shù)組,并在數(shù)組中搜索遠程 IP 地址。 如果找不到遠程 IP 地址,中間件將返回 HTTP 403 禁止訪問。 對于 HTTP GET 請求,將跳過此驗證過程。

  1. public class AdminSafeListMiddleware 
  2.     private readonly RequestDelegate _next; 
  3.     private readonly ILogger<AdminSafeListMiddleware> _logger; 
  4.     private readonly string _safelist; 
  5.  
  6.     public AdminSafeListMiddleware( 
  7.         RequestDelegate next
  8.         ILogger<AdminSafeListMiddleware> logger, 
  9.         string safelist) 
  10.     { 
  11.         _safelist = safelist; 
  12.         _next = next
  13.         _logger = logger; 
  14.     } 
  15.  
  16.     public async Task Invoke(HttpContext context) 
  17.     { 
  18.         if (context.Request.Method != HttpMethod.Get.Method) 
  19.         { 
  20.             var remoteIp = context.Connection.RemoteIpAddress; 
  21.             _logger.LogDebug("Request from Remote IP address: {RemoteIp}", remoteIp); 
  22.  
  23.             string[] ip = _safelist.Split(';'); 
  24.  
  25.             var bytes = remoteIp.GetAddressBytes(); 
  26.             var badIp = true
  27.             foreach (var address in ip) 
  28.             { 
  29.                 var testIp = IPAddress.Parse(address); 
  30.                 if (testIp.GetAddressBytes().SequenceEqual(bytes)) 
  31.                 { 
  32.                     badIp = false
  33.                     break; 
  34.                 } 
  35.             } 
  36.  
  37.             if (badIp) 
  38.             { 
  39.                 _logger.LogWarning( 
  40.                     "Forbidden Request from Remote IP address: {RemoteIp}", remoteIp); 
  41.                 context.Response.StatusCode = StatusCodes.Status403Forbidden; 
  42.                 return
  43.             } 
  44.         } 
  45.  
  46.         await _next.Invoke(context); 
  47.     } 

操作篩選器

如果需要針對特定 MVC 控制器或操作方法的安全安全訪問控制,請使用操作篩選器。 例如:。

  1. public class ClientIpCheckActionFilter : ActionFilterAttribute 
  2.     private readonly ILogger _logger; 
  3.     private readonly string _safelist; 
  4.  
  5.     public ClientIpCheckActionFilter(string safelist, ILogger logger) 
  6.     { 
  7.         _safelist = safelist; 
  8.         _logger = logger; 
  9.     } 
  10.  
  11.     public override void OnActionExecuting(ActionExecutingContext context) 
  12.     { 
  13.         var remoteIp = context.HttpContext.Connection.RemoteIpAddress; 
  14.         _logger.LogDebug("Remote IpAddress: {RemoteIp}", remoteIp); 
  15.         var ip = _safelist.Split(';'); 
  16.         var badIp = true
  17.  
  18.         if (remoteIp.IsIPv4MappedToIPv6) 
  19.         { 
  20.             remoteIp = remoteIp.MapToIPv4(); 
  21.         } 
  22.  
  23.         foreach (var address in ip) 
  24.         { 
  25.             var testIp = IPAddress.Parse(address); 
  26.  
  27.             if (testIp.Equals(remoteIp)) 
  28.             { 
  29.                 badIp = false
  30.                 break; 
  31.             } 
  32.         } 
  33.  
  34.         if (badIp) 
  35.         { 
  36.             _logger.LogWarning("Forbidden Request from IP: {RemoteIp}", remoteIp); 
  37.             context.Result = new StatusCodeResult(StatusCodes.Status403Forbidden); 
  38.             return
  39.         } 
  40.  
  41.         base.OnActionExecuting(context); 
  42.     } 

在中 Startup.ConfigureServices ,將操作篩選器添加到 MVC 篩選器集合。 在下面的示例中, ClientIpCheckActionFilter 添加了一個操作篩選器。 安全日志和控制臺記錄器實例作為構(gòu)造函數(shù)參數(shù)進行傳遞。

  1. services.AddScoped<ClientIpCheckActionFilter>(container => 
  2.     var loggerFactory = container.GetRequiredService<ILoggerFactory>(); 
  3.     var logger = loggerFactory.CreateLogger<ClientIpCheckActionFilter>(); 
  4.  
  5.     return new ClientIpCheckActionFilter( 
  6.         "127.0.0.1;192.168.1.5;::1", logger); 
  7. }); 

然后,可以將操作篩選器應(yīng)用到具有 [ServiceFilter] 屬性的控制器或操作方法:

  1. [ServiceFilter(typeof(ClientIpCheckActionFilter))] 
  2. [HttpGet] 
  3. public IEnumerable<string> Get() 

在示例應(yīng)用中,操作篩選器將應(yīng)用于控制器的 Get 操作方法。 當(dāng)你通過發(fā)送來測試應(yīng)用程序時:

HTTP GET 請求,該 [ServiceFilter] 屬性驗證客戶端 IP 地址。 如果允許訪問 Get 操作方法,則 "操作篩選器" 和 "操作" 方法將生成以下控制臺輸出的變體:

  1. dbug: ClientIpSafelistComponents.Filters.ClientIpCheckActionFilter[0] 
  2.       Remote IpAddress: ::1 
  3. dbug: ClientIpAspNetCore.Controllers.ValuesController[0] 
  4.       successful HTTP GET 

除 GET 之外的 HTTP 請求謂詞將 AdminSafeListMiddleware 驗證客戶端 IP 地址。

總結(jié)

該案例完全可以改造成黑名單攔截。

原文鏈接:https://mp.weixin.qq.com/s/DXDCHQcZ1azLTU0TEswjwQ

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩在线| 国产精品中文字幕在线 | 日韩精品一区二区三区中文字幕 | 日韩精品一区二区三区中文在线 | 久久精品| 狠狠综合久久 | 日韩成人在线观看 | 亚洲国产精品一区二区三区 | 成av在线 | 久久久www成人免费无遮挡大片 | 中文字幕一区二区三区日韩精品 | 欧美一区二区三区的 | 国产美女精品一区二区三区 | 99在线视频播放 | 亚洲国产综合在线 | 中文字幕一区二区三区乱码图片 | 亚洲免费在线 | 欧美成人精品一区二区男人看 | 天天干人人 | 久久免费视频9 | 久久天天 | 北条麻妃在线一区二区三区 | 国产激情精品视频 | 在线观看成人av | 欧美一级二级三级视频 | 九九亚洲| 91在线播放视频 | 在线观看国产视频 | 中文字幕在线免费看 | 日本黄色大片免费 | 久久综合成人精品亚洲另类欧美 | 国产精品一区不卡 | 91在线一区二区 | 日韩激情一区二区三区 | 精品国产一区二区国模嫣然 | 国产成人精品免费视频大全最热 | 韩国毛片在线 | 精品一区国产 | 91观看| 在线中文| 国产精品久久99 |