快速业务通道

细说Asp.net的IP地址屏蔽功能设计

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-12

添加IP屏蔽记录的代码:

/// <summary>

/// 添加一个新的IP屏蔽区段

/// </summary>

/// <param name="IP区段起始值">起始IP,如61.51.200.0</param>

/// <param name="IP区段终止值">终止IP,如61.51.255.255</param>

/// <param name="过期时间">屏蔽截止时间</param>

/// <returns>ID</returns>

public static Guid 添加(string IP区段起始值, string IP区段终止值, DateTime 过期时间)

{

    var id = Guid.NewGuid();

    var sip = IPAddress.Parse(IP区段起始值).转换为整数();

    var eip = IPAddress.Parse(IP区段终止值).转换为整数();

    using (var c = new SiteMainEntities())

    {

        //检测是否已存在相同的IP屏蔽记录

        var a = c.IP地址屏蔽.Where(f => f.区段起始值 == sip && f.区段终止值 == eip);

        //如果存在则更新其过期时间

        if (a.Count()>0)

        {

            var l = a.First();

            if (l.过期时间 < 过期时间) l.过期时间 = 过期时间;

        }

        //不存在则正常添加一个新的屏蔽记录

        else c.AddToIP地址屏蔽(new IP地址屏蔽 { ID = id, 过期时间 = 过期时间, 区段起始值 = sip, 区段终止值 = eip });

        c.SaveChanges();

    }

    return id;

}

检测指定IP地址是否被屏蔽的代码:

/// <summary>

/// 检测指定IP地址是否已受到屏蔽

/// </summary>

/// <param name="IP地址">要检测的IP地址</param>

/// <returns>是否属于已屏蔽的IP</returns>

public static bool 检测是否被屏蔽(string IP地址)

{

    var ip = IPAddress.Parse(IP地址).转换为整数();

    using (var c = new SiteMainEntities())

    {

        return c.IP地址屏蔽.Any(f => f.过期时间 > DateTime.Now && ip >= f.区段起始值 && ip <= f.区段终止值);

    }

}


 

/// <summary>

/// 验证传入IP地址是否应被屏蔽。

/// </summary>

/// <param name="IP地址">待验证的IP</param>

/// <returns>是否应被屏蔽</returns>

public bool 检测是否被屏蔽(IPAddress IP地址)

{

    var ip = IP地址.转换为整数();

    return 过期时间 > DateTime.Now && this.区段起始值 <= ip && this.区段终止值 >= ip;

}


这种方案比起以往的字符串验证方案来说优雅了许多,并可以提高数据库查询的效率,建议各位在日后的网站开发中都采用此方案。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号