关键词:
咨询区
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/24
和 192.168.0.0/255.255.255.0
,包括 CIDR
表达式和 IPv6。
参考下面的例子。
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
]
IPWhiteListConfiguration.cs:
namespace My.Web.Configuration
using System.Collections.Generic;
public class IPWhitelistConfiguration : IIPWhitelistConfiguration
public IEnumerable<string> AuthorizedIPAddresses get; set;
IIPWhiteListConfiguration.cs:
namespace My.Web.Configuration
using System.Collections.Generic;
public interface IIPWhitelistConfiguration
IEnumerable<string> AuthorizedIPAddresses get;
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);
// ...
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 层。
“阿里云”ecs服务器怎么设置ip白名单?
“阿里云”ECS服务器IP白名单设置操作步骤如下:1、登录云盾安全管控平台管理控制台;您也可以在登录阿里云控制台后,将鼠标移至右上角的账户图标打开用户菜单,并单击安全管控,进入云盾安全管控平台管理控制台。2、... 查看详情
nginx配置ip白名单和黑名单(代码片段)
白名单设置,访问根目录location/allow123.34.22.155;allow33.56.32.1/100;denyall;黑名单设置,访问根目录location/deny123.34.22.155;特定目录访问限制location/tree/listallow123.34.22.155;denyall; 查看详情
如何在 NodeJS socket.io 服务器上设置 IP 白名单?
】如何在NodeJSsocket.io服务器上设置IP白名单?【英文标题】:HowtosetanIPwhitelistonaNodeJSsocket.ioserver?【发布时间】:2021-10-1016:13:17【问题描述】:我想将与套接字服务器的连接限制为IP列表,有没有简单的方法可以做到这一点?到现... 查看详情
如何在asp.netcore中获取客户端ip?(代码片段)
...ables["REMOTE_ADDR"]来获取客户端IP地址,请问在ASP.NETCore中我该如何实现呢?回答区CodingYourLife如果你用的是.NET5,可以用内部提供的扩展方法来实现获取客户端IP,参考代码如下ÿ 查看详情
gitlab的rack-attack机制和如何设置白名单的记录(代码片段)
...使用源码安装的10.5中文版大纲:gitlabrack-attack机制的作用如何启用和禁用gitlab的rack-attack机制,以及如何配置白名单如果一个ip被错误地拦截,导致了不能访问,如何快速地恢复如果gitlab工作在一个反向代理(或者是负载均衡器)的后边,... 查看详情
winrm如何设置trustedhosts(代码片段)
如果希望WinRM能够建立连接,需要将IP地址设置为白名单。查看当前WinRM的白名单通过在命令行工具中运行下面的命令:Get-ItemWSMan:\\localhost\\Client\\TrustedHosts 上面命令行工具中显示了当前的配置情况设置所有地址下面的命... 查看详情
如何将 AWS Beanstalk IP 列入白名单
】如何将AWSBeanstalkIP列入白名单【英文标题】:HowtoWhitelistAWSBeanstalkIP【发布时间】:2020-03-3111:45:35【问题描述】:我的实用程序部署在AWSbeanstalk上,并将一些数据推送到我们客户的一个数据库服务器中。客户希望将beanstalk实例的... 查看详情
2021-05-19asp.netcore笔试题asp.netcore项目如何设置ip地址和端口号?
ASP.NETCore项目如何设置IP地址和端口号?可以使用Properties文件夹下的launchSettings配置文件来配置不同的启动方式的时候,分别配置IP和端口号。 查看详情
如何在春季安全中IP白名单/oauth/check_token端点
】如何在春季安全中IP白名单/oauth/check_token端点【英文标题】:howtoIPwhitelist/oauth/check_tokenendpointinspringsecurity【发布时间】:2018-09-0705:56:43【问题描述】:我有两个应用程序(战争),一个充当ResourceServer,另一个是我的AuthServer,... 查看详情
云展网教程|如何设置邮箱白名单?
为保证您能正常接收云展网所发邮件,可在邮箱中将[email protected]设置为邮箱白名单,具体设置方法如下:1. 网易邮箱2. QQ邮箱3. Gmail邮箱4. Hotmail邮箱5. 新浪邮箱6. 雅虎邮箱7. 搜狐邮箱8. 139邮箱9.... 查看详情
获取微信openid需要设置白名单吗
参考技术A需要设置白名单。需要一个公众号appid和secret,需要简单配置一下,在菜单最下方点击开发,点击基本配置,白名单这里填写电脑现自身的ip。设置访问微信公众号三方接口被授权获取token权限的白名单ip。 查看详情
postfix收信人白名单设置(代码片段)
...,开启收件人访问控制功能,指定收件人白名单文件,并设置缺省策略为拒绝(reject参数可不填,即不设置缺省),不可换行s 查看详情
如何在 Azure WAF 中将 IP 地址列入白名单
】如何在AzureWAF中将IP地址列入白名单【英文标题】:HowtowhitelistanipaddressinAzureWAF【发布时间】:2020-07-1922:37:19【问题描述】:我有一个使用OWASP3.0规则集的Azure应用程序网关Web应用程序防火墙。我创建了一个自定义策略,因此我... 查看详情
批量屏蔽符合条件的ip地址,支持添加白名单,ip段,增量,大于指定次数的ip(代码片段)
批量屏蔽符合条件的IP地址,支持添加白名单,IP段,增量 大概的思路是利用sh,从日志中提取出来对应的IP地址,然后再交由python进行对比,判断,最终将需要添加至iptables列表中的IP写入到一个文件中,然后再由sh进行... 查看详情
使用 EKS 与 IP 白名单服务通信
...9-11-2007:17:36【问题描述】:我已经使用eksctl使用所有默认设置设置了EKS集群,现在需要与使用IP白名单的外部服务进行通信。显然,从我的集群向服务发出的请求来自发出请求的任何节点,但是节点列表(及其ips)可以并且将会... 查看详情
如何在负载均衡器 Laravel 后面的 nginx 中将远程 IP 地址列入白名单
】如何在负载均衡器Laravel后面的nginx中将远程IP地址列入白名单【英文标题】:HowtowhitelistremoteipaddressesinnginxbehindaloadbalancerLaravel【发布时间】:2020-10-2013:17:03【问题描述】:我有一个我想通过负载均衡器后面的nginx在我的服务器... 查看详情
如何设置 API url,以便只有 IP 白名单客户端可以访问 API,而 Web 应用程序本身仍然可供所有人访问?
】如何设置APIurl,以便只有IP白名单客户端可以访问API,而Web应用程序本身仍然可供所有人访问?【英文标题】:HowcanIsetAPIurlsuchthattheAPIisaccessibleonlytoIPwhitelistedclientswhilethewebapplicationitselfremainsaccessibletoall?【发布时间】:2021-05-110... 查看详情
ip白名单(代码片段)
packagecom.ecreditpal.common.util;importlombok.extern.slf4j.Slf4j;importjava.util.ArrayList;importjava.util.HashSet;importjava.util.List;importjava.util.Set;importjava.util.regex.Pattern;/***@Au 查看详情