Asp.Net Core 中如何设置 IP 白名单

咨询区

  • MartinM

我想在一个web站点中实现ip白名单功能,在 MVC 时代我只需要在 web.config 中添加如下配置即可。


<security><ipSecurity allowUnlisted="false" denyAction="NotFound"><add allowed="true" ipAddress="XX.XX.XX.XX" subnetMask="255.255.255.0"/></ipSecurity>
</security>

但在 AspNetCore 中使用如上配置时,程序启动就会报错。


Unable to start process The web server request failed with status code 500, internal server error

很显然这个 config 配置是有问题的,请问是否有内置或者第三方的组件来实现这个功能?

回答区

  • Ergwun

Damian Bod 写了一篇文章:https://damienbod.com/2016/12/18/implementing-a-client-white-list-using-asp-net-core-middleware/ 来演示如果通过中间件的方式来实现 ip 白名单功能。

他分别给了一个 全局性中间件actionfilter 两种方式来实现,无论哪种方式都需要在 appsetttings.json 中配置可允许访问的 ip 列表,然后根据这个list来检查客户端的ip是否符合?client ip 可以通过 context.Connection.RemoteIpAddress 来获取。

如果你有更精细化的配置,比如说设置ip段,那你可以通过nuget上的 IPAddressRange 包来实现,它支持了多种格式,如:192.168.0.0/24192.168.0.0/255.255.255.0,包括 CIDR 表达式和 IPv6。

参考下面的例子。

  1. appsettings.json:


{"IPAddressWhitelistConfiguration": {"AuthorizedIPAddresses": ["::1", // IPv6 localhost"127.0.0.1", // IPv4 localhost"192.168.0.0/16", // Local network"10.0.0.0/16", // Local network]}
}
  1. IPWhiteListConfiguration.cs:


namespace My.Web.Configuration
{using System.Collections.Generic;public class IPWhitelistConfiguration : IIPWhitelistConfiguration{public IEnumerable<string> AuthorizedIPAddresses { get; set; }}
}
  1. IIPWhiteListConfiguration.cs:


namespace My.Web.Configuration
{using System.Collections.Generic;public interface IIPWhitelistConfiguration{IEnumerable<string> AuthorizedIPAddresses { get; }}
}
  1. Startup.cs:


public class Startup
{// ...public void ConfigureServices(IServiceCollection services){// ...services.Configure<IPWhitelistConfiguration>(this.Configuration.GetSection("IPAddressWhitelistConfiguration"));services.AddSingleton<IIPWhitelistConfiguration>(resolver => resolver.GetRequiredService<IOptions<IPWhitelistConfiguration>>().Value);// ...}}
  1. ClientIPAddressFilterAttribute.cs:


namespace My.Web.Filters
{using System.Collections.Generic;using System.Linq;using System.Net;using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Mvc.Filters;using NetTools;using My.Web.Configuration;public class ClientIPAddressFilterAttribute : ActionFilterAttribute{private readonly IEnumerable<IPAddressRange> authorizedRanges;public ClientIPAddressFilterAttribute(IIPWhitelistConfiguration configuration){this.authorizedRanges = configuration.AuthorizedIPAddresses.Select(item => IPAddressRange.Parse(item));}public override void OnActionExecuting(ActionExecutingContext context){var clientIPAddress = context.HttpContext.Connection.RemoteIpAddress;if (!this.authorizedRanges.Any(range => range.Contains(clientIPAddress))){context.Result = new UnauthorizedResult();}}}
}

点评区

在 website 中设置ip白名单的功能非常常见,nuget上也有很多的开源中间件帮助实现,比如:ClientIpAspNetCoreIIS,我在项目中也有用到白名单的功能,只不过是做到了 nginx 层。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业考研末流211和双非,211大学考985研究生难吗,如何看待本科985学生读研去211学校?...

今天小编先给大家讲一下关于考研的一些事情&#xff0c;我发现很多同学对于考研还是云里雾里的&#xff0c;连考研有哪些科目都不清楚。211大学考985研究生难吗对于考研&#xff0c;小编认为选择比努力重要&#xff0c;动力很大程度决定了你的结果&#xff0c;希望通过211大学研…

失业、创业。。。

在这个经济危机的时候&#xff0c;突然遭遇失业。呵呵&#xff0c;&#xff0c;暂且不说失业的原因了。当然这样的事情可能每天多发生。在一个企业里面待的时间长了对自己的发展未必是好事。在目标我待了两年&#xff0c;突然出来以后发现自己多难以适应这外面的世界。就像井底…

Exchange server 2007 出现“0x8004010F”错误的解决办法

环境&#xff1a; 服务器&#xff1a;Exchange server 2007 客户端&#xff1a;outlook2003或outlook2007 在outlook中通过MAPI方式访问Exchange server&#xff0c;在点击"发送接收"后出现0x8004010F的错误。 -------------------------------------------------- 1…

Hello Blazor:(7)WebAssembly、Server模式你选哪种?小孩子才做选择!我用混合模式...

在上次的文章中&#xff0c;我们介绍了“Blazor WebAssembly和Blazor Server的区别”。它们各有优缺点。Blazor WebAssembly的优势在于运行期间可以和服务器无交互&#xff0c;但是需要长时间下载资源&#xff0c;而Blazor Server则首次加载速度非常快&#xff0c;但是必须和服…

一生只有43年,喜欢泡妹打架,却凭借一篇文章震惊世界,跻身一流数学家

全世界只有3.14 %的人关注了青少年数学之旅不会做就别乱套我洛必达的公式!——节选自《数学之旅 闪耀人类的54个数学家》众所周知&#xff0c;求极限是高等数学中最重要的内容之一&#xff0c;而洛必达法则将对原式的求导转化成了导函数形式的问题&#xff0c;这就大大简化了一…

ORACLE 常用函数

好像ORACLE的资料比较少,把ORACLE的常用函数写下,以备一时忘记查看用...1.INITCAP 返回字符串并将字符串的第一个字母变为大写; SQL>selectinitcap(smith) upp fromdual;-----Smith2.CONCAT 连接两个字符串; SQL>selectconcat(010-,88888888)||转23高乾竞电话 fromdual;-…

计算机三级网络技术分值占比,大一能考计算机三级吗?计算机三级考试题型分析...

原标题&#xff1a;大一能考计算机三级吗&#xff1f;计算机三级考试题型分析计算机等级考试&#xff0c;很多学生在刚刚进入大学时&#xff0c;就想把计算机三级证书拿到手。那么&#xff0c;大一能考计算机三级吗&#xff1f;计算机三级考试题型有哪些&#xff1f;下面&#…

asp.net网页上嵌入Flash显示

网页上显示Flash&#xff0c;功能实现&#xff1a; 文件格式&#xff1a;.wmv;大小&#xff1a;19,530KB;长度&#xff1a;00:27:39&#xff1b;还包含JavaScript与用户控件等文件。 下载地址&#xff1a;http://download.cnblogs.com/insus/ASPDOTNET/Flash.zip转载于:https:/…

DTO 和 POCO(或 POJO)有什么区别

DTO 和 POCO&#xff08;或 POJO&#xff09;有什么区别原文链接&#xff1a;https://ardalis.com/dto-or-poco/作者&#xff1a;Ardalis Steve在讨论 .NET 和 C# 中的软件开发时经常出现的两个术语是 DTO 和 POCO。一些开发人员交替使用这些术语。那么&#xff0c;DTO 和 POCO…

Nginx server之Nginx作为反向代理服务器

2019独角兽企业重金招聘Python工程师标准>>> 一&#xff1a;Nginx介绍 1.Nginx简介&#xff1a;nginx [engine x]是一个俄罗斯人编写的HTTP和反向代理服务器&#xff0c;另外它也可以作为邮件代理服务器。 它已经在众多流量很大的俄罗斯网站上使用了很长时间&#x…

增加FiroFox3对迅雷的支持

当然&#xff0c;这对于Firefox来说是最好的了&#xff0c;以前的Thunder 扩展”Thunder Extension1.1“在firefox 2.0.0.4之后就不能用了&#xff0c;现在该扩展用的用的版本是”Thunder Extension3.5“。不用大家满世界找了&#xff0c;迅雷已经内置了。 注意&#xff1a;鉴于…

***一般如何***服务器

***方式&#xff0c;前期准备工作&#xff0c;漏洞收集&#xff0c;扫描&#xff0c;路由及网关分析&#xff0c;然后有网络编程以达到***的作用以至被***的机器瘫换.这种是具备专业知识的.一般的就是用工具了***.比如用工具发大量数据包,造成拒绝服务器***,SYN同步***.总的来说…

为什么现在老师这么难,值得大家深思

致各位老师不知不觉&#xff0c;顶级教师圈已经陪伴大家走过3个月的时光。我们每天为教师们推送教育资讯&#xff0c;得到了许多关心和支持。为了感谢各位教师们的支持和鼓励&#xff0c;顶级教师圈今日特举办限时资源福利活动。我们精心整理了100G海量教学资源&#xff0c;包含…

学计算机要买什么样的电脑,大学开学要买电脑吗?又要买什么样的电脑?看准这些再买也不迟!...

电脑是我们生活中重要的通讯工具&#xff0c;方便了我们学习办公、工作设计、娱乐游戏&#xff0c;我们也越来越依赖电脑处理不同的事情&#xff0c;尤其是现在的开学季&#xff0c;很多准大学生都准备给自己购置一台电脑&#xff0c;但是由于自己不懂&#xff0c;买了怕被坑&a…

C#中的解构

解构是将一个对象分割成若干部分并将其存储到新的变量中。在 C# 中&#xff0c;解构可以方便地一次性将一个对象的多个成员的值存储到多个变量中。1解构元组元组为方法返回多个值提供了便捷&#xff0c;无需创建额外的类型来承载返回的值。例如&#xff0c;下面这个方法使用元组…

javascript一些常用的代码

1&#xff1a;Response.Write("<script>alert(登录名和密码不能为空&#xff01;);locationjavascript:history.go(-1);</script>");返回上一页&#xff1b; 2&#xff1a;增加到收藏夹&#xff1a;javascript:window.external.addfavorite&#xff08;“…

转:人生成功必读的经典语录200条

1 热忱是推销成功的最大要素&#xff0c;也是唯一要素。 2 身为一名推销员&#xff0c;没有比完成一笔好交易更快乐的事。 3 无论推销什么东西&#xff0c;先推销自己。 4 充分了解客户对一位推销员而言&#xff0c;是一件非常重要的事。 5 我们每个人在世界上都是独一无二的&a…

在Ubuntu上安装RealPlayer的方法

初用Ubuntu感觉还不错&#xff0c;但发现没有RMVB的播放软件&#xff0c;下载个安装不上。后来才发现&#xff0c; 不是有效的可执行文件。转换之&#xff1a;chmod &#xff0b;x RealPlayer10GOLD.bin之后一路回车就OK了。./RealPlayer10GOLD.bin装完毕&#xff0c;在“应用程…

如果格局决定人生,那到底什么决定了格局

全世界只有3.14 %的人关注了青少年数学之旅真正决定人与人之间的差距的&#xff0c;其实是我们对事物的见识与内心的格局&#xff0c;见识的深浅决定人生的深浅&#xff0c;格局的大小决定了人生之路是宽是窄。今天给大家推荐几个有深度、有想法的公众号&#xff0c;希望能够给…

海尔微型计算机一键还原怎么操作,教你电脑一键还原怎么操作

当系统使用的时间久了&#xff0c;出现了不好修复的问题&#xff0c;可使用电脑的一键还原来解决。但一些用户不知电脑一键还原怎么操作呢?其实方法并不难&#xff0c;有需要的用户&#xff0c;请来看看下面的步骤吧一键还原又叫做一键恢复&#xff0c;计算机系统出现问题时就…