限制IP地址访问的最佳方法是什么?

时间:2009-01-10 14:23:40

标签: c# .net asp.net security

对于ASP.NET C#应用程序,我们需要根据IP地址限制访问。实现这一目标的最佳方法是什么?

3 个答案:

答案 0 :(得分:16)

一种方法是使用HttpModule

从链接(如果它消失):

/// <summary>
/// HTTP module to restrict access by IP address
/// </summary>

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部分注册它,如下所示:

<configuration>
    <system.web>
        <httpModules>
            <add name="SecurityHttpModule" type="SecurityHttpModule"/>
        </httpModules>
    </system.web>
</configuration>

这会将模块添加到Web应用程序的ASP.NET请求管道中。

答案 1 :(得分:8)

以下是关于如何执行此操作的article from Microsoft


按IP地址或域名设置文件夹安全性

Apache使用Allow和Deny指令来确定可以访问特定网站或文件夹的站点。但是,Apache提供自主访问控制;您必须拒绝所有站点并提供可以访问文件夹或允许所有站点的特定站点或IP地址列表,并仅拒绝您不希望访问的站点。例如,如果您使用以下指令,则拒绝所有客户端计算机访问,除非它们被识别为domain.com域的一部分:

拒绝所有
允许来自.domain.com

IIS的工作方式相同。除列出的客户外,所有客户都被明确拒绝或授予访问权限。

定义特定文件夹或网站的访问控制

  • 以管理员身份登录Web服务器计算机。
  • 单击“开始”,指向“设置”,然后单击“控制面板”。
  • 双击“管理工具”,然后双击“Internet服务管理器”。
  • 如果要限制整个站点的访问权限,请从左窗格的不同服务站点列表中选择该站点。

  • 如果您只想限制特定文件夹的访问权限,请点击您要控制的文件夹。

  • 右键单击网站或文件夹,然后单击“属性”。
  • 单击“目录安全性”面板。
  • 如果要限制对特定网站集的访问权限但拒绝访问所有其他网站,请单击“拒绝访问”。
  • 如果您希望默认授予对所有客户端的访问权限但排除特定的客户端列表,请单击“授权访问”。
  • 要更新“例外”列表中的主机或域列表,请单击“添加”。
  • 要将单台计算机添加到列表,请单击“单台计算机”,在相应的框中键入IP地址,然后单击“确定”。
  • 要添加特定地址范围内的一系列计算机,请单击“计算机组”,在相应的框中键入网络的IP地址,键入要配置的网络范围的子网掩码,然后单击“确定”。
  • 要按其标识的域名添加计算机,请单击“域名”,然后在相应的框中键入域名。
  • 单击“属性”,键入域名,然后单击“确定”。
  • 单击“确定”,然后单击“确定”。

注意:如果您使用域名限制,则服务器必须为每个请求执行反向DNS查找,以检查主机的注册域名。 Microsoft建议您尽可能使用IP地址或网络范围。

答案 2 :(得分:8)

在IIS 7中,限制IP的最佳方法是使用配置文件。

全文:
http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html