做BS系统过程中,有时候不可避免地使用到客户端IP限制,这个过程可以笼统地概括为IP认证.
IP认证做法是在服务器端写入授权IP范围,然后对将请求的IP与授权的IP范围进行验证,我们这里谈到的就是此处的IP验证技术
在这个验证过程中,包含两步,第一步授权IP预先验证以保证授权IP以及IP范围的正确性(当然如果你能确保编辑人员肯定不会犯错除外,考虑到系统的容错性这一步一般不会省掉),这个IP授权范围的预先认证通常情况下相当繁琐(包含授权IP本身的验证,当然算法一般).第二步才是IP范围验证
当然还有一种不用预先验证就能确保授权IP与授权IP范围的正确性的方法(也可以说是表面上没有预先验证,算法本身已经验证了)
它的步骤如下
1.将IP转换成对应正确的长整型数据(注意算法:不能随意转换)
2.最后在进行IP范围验证
将IP转换成对应的长整型数据的算法如下
public class IPToLongHelper
{
public static long ConvertIPToLong(string Ip)
{
long longResult = 0;
try
{
//取出IP地址去掉‘.’后的string数组
string[] Ip_List = Ip.Split('.');
string X_Ip = "";
//循环数组,把数据转换成十六进制数,并合并数组(3dafe81e)
foreach (string ip in Ip_List)
{
X_Ip += Convert.ToByte(ip).ToString("x").PadLeft(2, '0');
}
//将十六进制数转换成十进制数(1034938398)
longResult = long.Parse(X_Ip, System.Globalization.NumberStyles.HexNumber);
}
catch
{
//设置的IP范围异常
}
return longResult;
}
}
之后就可以不用担心IP是否设置正确,直接进行IP范围认证了
浙公网安备 33010602011771号