阻止IP地址在印度边

时间:2015-05-13 11:53:29

标签: c# .net iis-7.5

我在IIS中部署了.net应用程序。它应该只在印度境内可以访问。如果请求来自印度以外,我们必须禁止它。

IIS有一个允许或拒绝基于IP地址范围的选项。但是,我需要知道印度的IP地址范围

请建议......

2 个答案:

答案 0 :(得分:1)

您必须使用某些第三方API,例如IP Address Geolocation XML API,因为您无法直接从IP地址识别国家/地区。以下是example如何使用IP地址查找国家/地区。

来源的代码可以找到这个国家:

using System.Net;
using System.IO;
using System.Xml;
using System.Collections.Specialized;

public class CountryIP {
    public string GetCountryByIP(string ipAddress) {
      string ipResponse = IPRequestHelper("http://ipinfodb.com/ip_query_country.php?ip=", ipAddress);

      XmlDocument ipInfoXML = new XmlDocument();
      ipInfoXML.LoadXml(ipResponse);
      XmlNodeList responseXML = ipInfoXML.GetElementsByTagName("Response");

      NameValueCollection dataXML = new NameValueCollection();

      dataXML.Add(responseXML.Item(0).ChildNodes(2).InnerText, responseXML.Item(0).ChildNodes(2).Value);

      string xmlValue = dataXML.Keys(0);

      return xmlValue;
    }

    public string IPRequestHelper(string url, string ipAddress) {
      string checkURL = url + ipAddress;

      HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
      HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();

      StreamReader responseStream = new StreamReader(objResponse.GetResponseStream());
      string responseRead = responseStream.ReadToEnd();

      responseStream.Close();
      responseStream.Dispose();

      return responseRead;
    }
}

其他一些API,例如 HostIp.Info

答案 1 :(得分:0)

你必须在你的应用程序中执行此操作,尽管它很简单。

  1. 获取Geo-IP数据库或访问Geo-IP网络服务(如果使用网络服务,那么缓存您过去看过的IP,例如月份,而不是一遍又一遍地打击它)是一个非常好的主意。
  2. 将模块绑定到BeginRequest事件。
  3. 在模块中,根据服务检查IP。它将被认为是在印度(通过),被认为是本地(通过),被认为是在另一个国家(失败)或未知的位置(通过或失败取决于你是否想要在一边错误阻止一些印度用户或允许一些非印度用户)。
  4. 如果失败,请回复错误消息并停止所有进一步处理。
  5. 然后使用像Hola(this is a referral-link for a free trial on their premium service这样的代理服务,但实际上他们的免费服务可能足以满足你的需要)来测试来自不同国家的服务。

    (当然,您阻止的人也可以使用完全相同的方法来绕过您的限制。)

    会有一些假阳性和假阴性,因为geo-ip数据库往往不是完美的。例如。我在爱尔兰都柏林有一家公司,他的办公室似乎就在法国巴黎郊外,因为他们使用的是法国母公司办公室的一部分,依此类推。