-1

私は asp.net Web アプリケーションを持っており、会社のネットワーク (LAN) からのみ使用できるようにしたいのですが、どうすれば作成できますか??

4

1 に答える 1

3

あなたはできる

  • ファイアウォールを使用して、結果の接続をブロックしてください。これが最も安全です。
  • ログインページを使用し、登録ユーザーのみを許可します。
  • 安全性の低い方法は、アプリケーション内の各接続の ips を確認することです。

IP を確認するには、BeginRequest でクライアント IP を読み取り、それがプライベート ネットワークの範囲内にあるかどうかを確認するか、他の任意の IP を配置します。そうでない場合は、接続を閉じます。

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    if(!IsPrivateNetwork(MyCurrentContent.Request.ServerVariables["REMOTE_ADDR"])
    {
        HttpContext.Current.Response.TrySkipIisCustomErrors = true;
        HttpContext.Current.Response.StatusCode = 403;
        HttpContext.Current.Response.End();
        return ;    
    }
}


public bool IsPrivateNetwork(string sMyIpString)
{
    long TheIpTranslate = AddressToNum(sMyIpString);

    if (TheIpTranslate >= 0)
    {
        // 192.168.0.0 192.168.255.255
        if (TheIpTranslate >= 3232235520 && TheIpTranslate <= 3232301055)
            return true;

        // 10.0.0.0 10.255.255.255
        if (TheIpTranslate >= 167772160 && TheIpTranslate <= 184549375)
            return true;

        // 172.16.0.0 172.31.255.255
        if (TheIpTranslate >= 2886729728 && TheIpTranslate <= 2887778303)
            return true;
    }

    return false;
}

public long AddressToNum(string cAddress)
{
    IPAddress MyIpToCheck = null;

    if (IPAddress.TryParse(cAddress, out MyIpToCheck))
    {
        return AddressToNum(MyIpToCheck);
    }
    else
    {
        return -1;
    }
}


public long AddressToNum(IPAddress Address)
{
    byte[] b = BitConverter.GetBytes(Address.Address);

    if (b.Length == 8)
        return (long)(((long)16777216 * b[0]) + ((long)(65536 * b[1])) + ((long)(256 * b[2])) + b[3]);
    else
        return 0;
}
于 2013-01-22T08:46:32.623 に答える