zoukankan      html  css  js  c++  java
  • 任意格式,屏蔽任意IP,IP地址段


    支持多个通配符,任意通配符位置,可屏蔽IP段和具体IP地址

     1'By zkxp 2/15/2006 http://zkxp.cnblogs.com 
     2'受屏蔽IP地址(段)集合,星号为通配符,通常保存于配置文件中。
     3Const BadIPGroup = "192.168.1.*|202.68.*.*|*.12.55.34|185.*.96.24|127.*.0.1|192.168.0.1"
     4
     5If IsForbidIP(BadIPGroup) = True Then
     6    Response.Write(GetIP &"IP地址禁止访问")
     7    Response.End()
     8End If
     9
    10
    11'****************************************************************
    12'参数vBadIP:要屏蔽的IP段,IP地址集合,用|符号分隔多个IP地址(段)
    13'返回Bool:True用户IP在被屏蔽范围,False 反之
    14'****************************************************************
    15Function IsForbidIP(vBadIP)
    16    Dim counter, arrIPPart, arrBadIP, arrBadIPPart, i, j
    17    
    18    arrBadIP = Split(vBadIP, "|")    
    19    arrIPPart = Split(GetIP(), ".")
    20    
    21    For i = 0 To UBound(arrBadIP)         
    22        counter = 0
    23        arrBadIPPart = Split(arrBadIP(i), ".")        
    24        For j = 0 To UBound(arrIPPart)             
    25            If(arrBadIPPart(j)) = "*" or Cstr(arrIPPart(j)) = Cstr(arrBadIPPart(j)) Then            
    26                counter = counter + 1            
    27            End If            
    28        Next        
    29        If counter = 4 Then            
    30            IsForbidIP = True
    31            Exit Function
    32        End If        
    33    Next
    34    IsForbidIP = False
    35End Function
    36
    37'***************
    38'返回客户IP地址
    39'***************
    40Function GetIP()
    41    Dim IP
    42    IP = Request.ServerVariables("HTTP_X_FORWARDED_FOR"
    43    If IP = "" Then IP = Request.ServerVariables("REMOTE_ADDR")
    44    GetIP = IP
    45End Function


     

    另,网上看到的另一个用加减乘除来判断的,有点取巧,单很不灵活,且代码似乎还有问题。仅供参考。

    <%
    function IP2Num(sip)
    dim str1,str2,str3,str4
    dim num
    IP2Num
    =0
    if isnumeric(left(sip,2)) then
    str1
    =left(sip,instr(sip,".")-1)
    sip
    =mid(sip,instr(sip,".")+1)
    str2
    =left(sip,instr(sip,".")-1)
    sip
    =mid(sip,instr(sip,".")+1)
    str3
    =left(sip,instr(sip,".")-1)
    str4
    =mid(sip,instr(sip,".")+1)
    num
    =cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1
    IP2Num 
    = num
    end if
    end function

    function Num2IP(nip)
    iip1 
    = int(nip/256/256/256)
    iip2 
    = int((nip-iip1*256*256*256)/256/256)
    iip3 
    = int((nip-iip1*256*256*256-iip2*256*256)/256)
    iip4 
    = int((nip-iip1*256*256*256-iip2*256*256-iip3*256mod 256)
    iip0 
    = iip1 &"."& iip2 & "." &iip3 &"."& iip4
    Num2IP 
    = iip0
    end function

    userIPnum 
    = IP2Num(Request.ServerVariables("REMOTE_ADDR"))

    if userIPnum > IP2Num("192.168.3.0"and userIPnum < IP2Num("192.168.3.255"then
    response.write (
    "<center>此IP被禁止</center>")
    response.end
    '页面ASP解释结束
    end if
    %
    >
    显示内容
  • 相关阅读:
    JS设置Cookie过期时间
    linq to xml
    ToDictionary的用法
    为程序使用内存缓存(MemoryCache)
    NuGet的几个小技巧
    IIS 的几个小技巧
    在Visual Studio中使用NuGet管理项目库
    在ASP.NET MVC中,使用Bundle来打包压缩js和css
    在C#中使用WMI查询进程的用户信息
    WMI测试器
  • 原文地址:https://www.cnblogs.com/zkxp/p/330964.html
Copyright © 2011-2022 走看看