0

アクセスがローカル ネットワーク (サーバーと同じネットワーク) からのものか、インターネットからのものかを特定する必要があります。(ASP.NET を使用)

追加のセキュリティを作成する予定です。つまり、外部からのアクセスの場合、特定のユーザーのみを「許可」します。

ウェブで検索しようとしましたが、何も見つかりませんでした。

前もって感謝します。

4

1 に答える 1

0

このようなことができます(ダミーコード)

  private bool IsInSameSubnet(IPAddress address, IPAddress address2, IPAddress subnetMask) {
            bool isInSameSubnet = false;
            IPAddress network1 = GetNetworkAddress(address, subnetMask);
            IPAddress network2 = GetNetworkAddress(address2, subnetMask);
            if (network1 != null && network2 != null) {
                isInSameSubnet = network1.Equals(network2);
            }
            return isInSameSubnet;
        }
    private IPAddress GetNetworkAddress(IPAddress address, IPAddress subnetMask) {

        byte[] ipAdressBytes = address.GetAddressBytes();
        byte[] subnetMaskBytes = subnetMask.GetAddressBytes();

        if (ipAdressBytes.Length != subnetMaskBytes.Length)
            return null;
        //throw new ArgumentException("Lengths of IP address and subnet mask do not match.");

        byte[] broadcastAddress = new byte[ipAdressBytes.Length];
        for (int i = 0; i < broadcastAddress.Length; i++) {
            broadcastAddress[i] = (byte)(ipAdressBytes[i] & (subnetMaskBytes[i]));
        }
        return new IPAddress(broadcastAddress);
    }

IsInSameSubnetアドレスが同じネットワーク内にあるかどうかを確認する場所

例 :

string computerIP = getIP();

            IPAddress ip1 = IPAddress.Parse(computerIP);
            IPAddress ip2 = IPAddress.Parse("192.168.0.0");
            IPAddress subnetMask = IPAddress.Parse("255.255.0.0");

getIp方法

 public static string getIP() {
            //if user behind proxy this should get it
            string ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            if (ip != null && ip.Split(',').Count() > 1) {
                //if (ip.Split(',').Count() > 1)
                ip = ip.Split(',')[0];
            }

            //if user not behind proxy this should do it
            if (ip == null)
                ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            return ip;
        }
于 2013-07-29T14:45:53.523 に答える