2015-05-13 73 views
1

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

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

的IP地址范围

请建议...

+0

看看这里。 [限制网站访问特定国家](http://stackoverflow.com/questions/8384421/restrict-website-to-access-specific-country) –

回答

1

您必须使用一些第三方API像IP Address Geolocation XML API你cannnot从IP编辑部地址直接识别的国家。以下是关于如何使用IP地址查找国家的example

从源头上找国的代码是这样的:

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

+0

谢谢。实际上我们的项目是银行业。所以他们不会允许我们出于安全原因而致电第三方API。 –

+0

@sankarapandian: - 我担心,如果不使用任何外部API,您将无法实现该功能,因为只使用IP地址而无需使用任何API即无法识别国家/地区。 –

0

你必须在应用程序中做到这一点,但它足够简单。

  1. 获取经纬度IP数据库或访问地理-IP Web服务(如果使用Web服务这将是缓存的IP一个非常好的主意,你已经看到在过去的一个月例如,而不是在打它和过度)。
  2. 将模块绑定到BeginRequest事件。
  3. 在模块中,根据服务检查IP。它将被认为是在印度(通行证),据信是本地(通行证),相信是在另一个国家(失败)或未知地点(通过或失败,取决于你是否想在阻止一些印度用户或允许一些非印度用户)。
  4. 如果失败,请回复错误消息并停止所有进一步处理。

然后使用Hola(this is a referral-link for a free trial on their premium service,但其真正的免费服务可能足以满足您的需求)的代理服务从不同的国家进行测试。

(当然,同样,你阻止的人可以使用完全相同的方法来解决你的限制)。

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

+0

谢谢。实际上我们的项目是银行业。所以他们不会允许我们出于安全原因而致电第三方API。 –

+0

然后,“获取Geo-IP数据库或访问Geo-IP Web服务”变为“获取Geo-IP数据库”。有像MaxMind这样的公司会授权您可以托管自己的数据库,并提供更新以保持您的信息最新。 –

+1

@sankarapandian: - 乔恩在谈论这个:http://dev.maxmind.com/geoip/legacy/geolite/ –