ASP安全检测类

作者:孤剑

时间:2006-9-27

<%
 class security
  Private p_InvaildWords
  Private p_hError,p_Hex,p_errDetails
  Private p_msg
  Private P_ipAdd
  
  Private Sub Class_Initialize
   p_hError=&H00000000
   p_msg=""
   p_Hex=TRUE
   p_errDetails=false
   p_InvaildWords="from|select|update|delete|insert|--|;|'|#|%|xp|cmd|shell|drop|create"
  End Sub
  
  rem **********************************************************************
  rem 系统属性定义区域
  public property get Version()
   version="Security 2.0.1.24"
  end property
  rem ----------------------------------------------------------------------
  
  public property let Filter(words)
   if(lcase(left(trim(words),7))="default") then
    p_InvaildWords =p_InvaildWords & right(trim(words),len(trim(words))-7)
   else
    p_InvaildWords=words
   end if
  end property
  rem ----------------------------------------------------------------------
  
  '**********************************
  ' 获得此过程中产生的错误信息
  '----------------------------------
  Public property let HexError(hnum) '2006-9-18 添加编码属性
   if(isnumeric(hnum)) then
    if(cint(hnum)=16) then p_hex=true
   end if
  End Property
  rem ----------------------------------------------------------------------  
  Public property let ShowErrorNum(value) '2006-09-18 添加条事实显示详细的错误信息
   if(value) then
    p_errdetails=true
   else
    p_errdetails=false
   end if
  End Property  
  rem ---------------------------------------------------------------------- 
  Public Property Get ErrNum()
   If (p_hex) then 'Hex Code
    ErrNum=hex(p_hError)
   Else
    ErrNum=p_hError 'D Code
   End if
  End Property
  rem ----------------------------------------------------------------------  
  Public Property Get ErrDescription()
   if(len(trim(p_msg))<1) then
    ErrDescription="<li>系统正常!</li>"
   else
    ErrDescription=p_msg
   end if
  End Property
  '***********************************
  rem ----------------------------------------------------------------------
  rem 属性定义结束
  rem **********************************************************************
  
  rem **********************************************************************
  rem 功能函数
  '******************************
  '名称: ChkPost
  '参数:NULL
  '返回值:True:本站/False:未知来源
  '创建时间:2005年5月5日
  '作用:检查被提交的数据来源
  '******************************
  Public Function ChkPost()
   Dim Server_v1,Server_v2
   ChkPost=false
   Server_v1=CStr(Request.ServerVariables("HTTP_REFERER"))
   Server_v2=CStr(Request.ServerVariables("SERVER_NAME"))
   If Mid(Server_v1,8,Len(Server_v2))=Server_v2 Then  
    ChkPost=True
   else
    p_hError=&H11010301
    p_msg=p_msg & "<li><font color=red>数据来源不确定,请从常规入口进入!</font>"
    if (p_errDetails) then p_msg=p_msg & "(错误码:"& hex(p_hError) &")"
    p_msg =p_msg & "</li>"
   end if
  End Function
  rem ----------------------------------------------------------------------
 
  '******************************
  '名称: ChkInvStr
  '参数:Str
  '返回值:True(有特殊字符)/False(无特殊字符)
  '创建时间:2006年9月16日
  '作用:检查参数是否有非法字符
  '******************************
  Public Function ChkInvStr(Str)
   Rem 定义需要过滤得非法字符
   Dim InvaildWord,inWords,i
   Dim m_msg
   m_msg=""
   Str=CStr(Str)
   ChkInvStr=FALSE
   If Len(Replace(p_InvaildWords,Chr(0),""))<1 Then
    p_hError=&H10010001
    p_msg =m_msg & "<li>系统设置有误!"
    if (p_errDetails) then p_msg=p_msg & "(错误码:"& hex(p_hError) &")"    
    p_msg = p_msg & "</li>"
   Else
    InvaildWord=Split(p_InvaildWords,"|")
    inWords=LCase(Trim(Str))
    For i=LBound(InvaildWord) To UBound(InvaildWord)
     If Instr(inWords,trim(InvaildWord(i)))>0 and len(InvaildWord(i))>0 Then
      p_hError=&H11010102 '发现非法字符
      m_msg = m_msg & " <font color=""red"">" & InvaildWord(i) & "</font> "
     End If
    Next
   End If
   if (p_hError=&H11010102) then
    p_msg=p_msg &"<li>"& m_msg & " 是被系统禁止的."
    if (p_errDetails) then p_msg=p_msg & "(错误码:"& hex(p_hError) &")"
    p_msg =p_msg & "</li>"
    ChkInvStr=TRUE
   end if
  End Function
  rem ----------------------------------------------------------------------
 
  '******************************
  '名称: GetIP
  '参数:NULL
  '返回值:NULL
  '创建时间:2005年5月3日
  '作用:得到用户的ip地址
  '******************************
  Public Function GetIP()
   p_IpAdd=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
   If IsNull(p_IpAdd) OR p_IpAdd="" Then
    p_IpAdd=Request.ServerVariables("REMOTE_ADDR")
   else
    p_herror=&H11010201
    p_msg =p_msg & "<li>您使用了代理 "
    if (p_errDetails) then p_msg=p_msg & "(错误码:"& hex(p_hError) &")"
    p_msg =p_msg & "</li>"
   End If
   GetIp=p_IpAdd
  End Function
  rem ----------------------------------------------------------------------
  rem ********************************************************************** 
  
 end class
%>

时间: 2024-07-28 13:11:56

ASP安全检测类的相关文章

ASP在线升级类文件

在线 <% Rem ##################################################################################### Rem ## 在线升级类声明 Class Cls_oUpdate Rem ################################################################# Rem ## 描述: ASP 在线升级类 Rem ## 版本: 1.0.0 Rem ## 作者: 萧月

ASP的数据库类

数据|数据库 ASP的数据库类 一.前言 提到ASP操作数据库,大多数人会想到:共用的连接字串ConStr.Conn.Open ConStr建立数据库连接.Conn.Execute SqlCmd方式执行命令.RecordSet.Open Sql,Conn,1,1取得记录集,的确这种方法被99%的人或公司采用.对于操作数据库过程中产生的错误,恐怕99%的人不会进行处理,要么在程序的开头加入on error resume next"轻松"跳过去.要么让错误信息连同错误代码一同"暴

Asp.Net类型转换类(通用类)代码分享_实用技巧

废话不多说了,直接给大家贴代码了,具体代码如下所述: /// <summary> /// 类型转换类 /// 处理数据库获取字段为空的情况 /// </summary> public static class DBConvert { #region------------------ToInt32类型转换------------------ /// <summary> /// 读取数据库中字符串并转换成Int32 /// 为空时返回0 /// </summary&

发一个ASP的ADODB类代码_ASP CLASS类

反正我现在用这个做了很多站,自己觉得还是满有用的,所以拿出来和大家分享一下.支持三种数据库连接:MSSQL2000,MSSQL2005,ACCESS 三种方法: select_table(sql) 表查询,返回TRUE或FALSE 当SQL语句出错,或空记录时返回FALSE,否则TRUE update_table(SQL) 表更新,包括update,delete 成功执行返回TRUE,否则返回FALSE,updated为执行后影响记录行数. insert_table(sql,table,id_c

ASP实例代码:asp操作Excel类

asp操作Excel类: <%'*******************************************************************'使用说明'Dim a'Set a=new CreateExcel'a.SavePath="x" '保存路径'a.SheetName="工作簿名称"       '多个工作表 a.SheetName=array("工作簿名称一","工作簿名称二")'a.Sh

关于ASP的(VBScript)类

vbscript 首先ASP的(VBScript)类是由事件和方法(它们就是构成类的成员了)构成的,如果大家还没有接触过,可以先看看下面的说明(哈哈,我是现学现卖,说得不好请见谅) 在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,只能在类内部调用) 或 Public(公有成员,可以在类内外部调用) .被声明为 Private 的将只在 Class 块内是可见的.被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见的.没

ASP 通用模板类

模板 ASP 通用模板类. 适合存在较少循环的模板.未实现内部循环,需要使用正则表达式,较浪费资源和时间,如需使用可参考这篇文章. 特性可设定私有缓存或公共缓存,提高效率可自由选择使用 Stream 组件或 FSO 组件支持自定义文件编码可保存文件 属性 Name文本,该模板名称,主要用于使用公共缓存时区分不同模板. Format文本,文件编码类型,可设置值. Object文本,使用组件,可设置值: StreamFSO PublicCache布尔值,使用公共缓存,开启时模板文件将保存到Appli

ASP在线升级类说明文件

在线 ●描述: ASP 在线升级类●版本: 1.0.0●作者: 萧月痕(xiaoyuehen)●MSN: xiaoyuehen(at)msn.com●请将(at)以 @ 替换

关于ASP的(VBScript)类,只希望给初学者看一看,希望对你们有帮助

vbscript|初学 首先ASP的(VBScript)类是由事件和方法(它们就是构成类的成员了)构成的,如果大家还没有接触过,可以先看看下面的说明(哈哈,我是现学现卖,说得不好请见谅) 在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,只能在类内部调用) 或 Public(公有成员,可以在类内外部调用) .被声明为 Private 的将只在 Class 块内是可见的.被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见