如何使用Asp限制过滤IP段的访问

作者:未知 来源:未知 添加时间:2006年6月30日 字体:

经常受垃圾广告的迫害,每天删除垃圾帖子删的手软,找来这篇文章希望各位站长能用上...

'By zkxp 2/15/2006 http://zkxp.cnblogs.com ;

'受屏蔽IP地址(段)集合,星号为通配符,通常保存于配置文件中。

Const BadIPGroup = "192.168.1.*|202.68.*.*|*.12.55.34|185.*.96.24|127.*.0.1|192.168.0.1"



If IsForbidIP(BadIPGroup) = True Then

    Response.Write(GetIP &"IP地址禁止访问")

    Response.End()

End If





'****************************************************************

'参数vBadIP:要屏蔽的IP段,IP地址集合,用|符号分隔多个IP地址(段)

'返回Bool:True用户IP在被屏蔽范围,False 反之

'****************************************************************

Function IsForbidIP(vBadIP)

    Dim counter, arrIPPart, arrBadIP, arrBadIPPart, i, j

    

   arrBadIP = Split(vBadIP, "|")    

   arrIPPart = Split(GetIP(), ".")

   

    For i = 0 To UBound(arrBadIP)         

        counter = 0

        arrBadIPPart = Split(arrBadIP(i), ".")        

        For j = 0 To UBound(arrIPPart)             

            If(arrBadIPPart(j)) = "*" or Cstr(arrIPPart(j)) = Cstr(arrBadIPPart(j)) Then            

                counter = counter + 1            

            End If            

        Next        

        If counter = 4 Then            

            IsForbidIP = True

            Exit Function

        End If        

    Next

    IsForbidIP = False

End Function



'***************

'返回客户IP地址

'***************

Function GetIP()

    Dim IP

    IP = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 

   If IP = "" Then IP = Request.ServerVariables("REMOTE_ADDR")

   GetIP = IP

End Function

ppdesk