可以放置在Global.asax
上的BeginRequest檢查。
protected void Application_BeginRequest(Object sender, EventArgs e)
{
// here check if is allowed
if(!IsOnPermitedNetwork(MyCurrentContent.Request.ServerVariables["REMOTE_ADDR"])
{
HttpContext.Current.Response.TrySkipIisCustomErrors = true;
HttpContext.Current.Response.StatusCode = 403;
HttpContext.Current.Response.End();
return ;
}
}
以及您需要進行檢查的一些實用程序功能。
public bool IsOnPermitedNetwork(string sMyIpString)
{
long TheIpTranslate = AddressToNum(sMyIpString);
if (TheIpTranslate >= 0)
{
// exampple
// 192.168.0.0 192.168.255.255
if (TheIpTranslate >= 3232235520 && TheIpTranslate <= 3232301055)
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;
}
您確定這是正確的方法嗎?有時候,通過自己的過錯,人們最終通過IP地址(正確或不正確地)「映射」到非美國地區連接到站點。您確定要阻止此類用戶使用您的網站嗎? IP->位置映射是一種*粗俗的工具,我推薦他們用於例如*默認*語言/地區設置,但不適用於訪問控制 –