对于ASP.NET C#应用程序,我们需要根据IP地址限制访问.完成此任务的最佳方法是什么?
一种方法是使用HttpModule.
从链接(如果它消失):
////// HTTP module to restrict access by IP address /// public class SecurityHttpModule : IHttpModule { public SecurityHttpModule() { } public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(Application_BeginRequest); } private void Application_BeginRequest(object source, EventArgs e) { HttpContext context = ((HttpApplication)source).Context; string ipAddress = context.Request.UserHostAddress; if (!IsValidIpAddress(ipAddress)) { context.Response.StatusCode = 403; // (Forbidden) } } private bool IsValidIpAddress(string ipAddress) { return (ipAddress == "127.0.0.1"); } public void Dispose() { /* clean up */ } }
构建HTTP Module类后,您需要在web.config文件的httpModules部分中注册它,如下所示:
这会将模块添加到Web应用程序的ASP.NET请求管道中.
以下是Microsoft提供的有关如何执行此操作的文章.
按IP地址或域名设置文件夹安全性
Apache使用Allow和Deny指令来确定可以访问特定网站或文件夹的站点.但是,Apache提供自主访问控制; 您必须拒绝所有站点并提供可以访问文件夹或允许所有站点的特定站点或IP地址列表,并仅拒绝您不希望访问的站点.例如,如果使用以下指令,则拒绝所有客户端计算机访问,除非它们被识别为domain.com域的一部分:
拒绝来自.domain.com的所有
允许
IIS的工作方式相同.除列出的客户端外,所有客户都被明确拒绝或授予访问权限.
定义特定文件夹或站点的访问控制
以管理员身份登录Web服务器计算机.
单击"开始",指向"设置",然后单击"控制面板".
双击"管理工具",然后双击"Internet服务管理器".
如果要限制整个站点的访问权限,请从左窗格中的不同服务站点列表中选择该网站.
如果要仅限制特定文件夹的访问权限,请单击要控制的文件夹.
右键单击该网站或文件夹,然后单击"属性".
单击"目录安全性"面板.
如果要限制对特定网站集的访问但拒绝访问所有其他网站,请单击"拒绝访问".
如果要默认授予对所有客户端的访问权限但排除特定的客户端列表,请单击"授权访问".
要更新"例外"列表中的主机或域列表,请单击"添加".
若要将单台计算机添加到列表,请单击"单台计算机",在相应的框中键入IP地址,然后单击"确定".
若要添加特定地址范围内的一系列计算机,请单击"计算机组",在相应的框中键入网络的IP地址,键入要配置的网络范围的子网掩码,然后单击"确定".
若要按其标识的域名添加计算机,请单击"域名",然后在相应的框中键入域名.
单击"属性",键入域名,然后单击"确定".
单击"确定",然后单击"确定".
注意:如果使用域名限制,则服务器必须为每个请求执行反向DNS查找,以检查主机的注册域名.Microsoft建议您尽可能使用IP地址或网络范围.
在IIS 7中,限制IP的最佳方法是使用配置文件.
全文:http:
//boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html