您的位置:首页 > 数据库

从别的地方看到的一个防注入函数

2007-03-17 13:09 309 查看
这个函数还是比较全面的,先判断字符串,再过滤特殊字符
不过我认为防御最好的办法就是用数字传入再转换类型


function sqlcheck(Str)


  if Instr(LCase(Str),"select ") > 0 or Instr(LCase(Str),"insert ") > 0 or Instr(LCase(Str),"delete ") > 0 or Instr(LCase(Str),"delete from ") > 0 or Instr(LCase(Str),"count(") > 0 or Instr(LCase(Str),"drop table") > 0 or Instr(LCase(Str),"update ") > 0 or Instr(LCase(Str),"truncate ") > 0 or Instr(LCase(Str),"asc(") > 0 or Instr(LCase(Str),"mid(") > 0 or Instr(LCase(Str),"char(") > 0 or Instr(LCase(Str),"xp_cmdshell") > 0 or Instr(LCase(Str),"exec master") > 0 or Instr(LCase(Str),"net localgroup administrators") > 0  or Instr(LCase(Str),"and ") > 0 or Instr(LCase(Str),"net user") > 0 or Instr(LCase(Str),"or ") > 0 then


    Call Qcdn.Err_List("请不要在参数中包含非法字符尝试注入!",1)


    Response.End


    exit function


  end if


  Str=Replace(Str,"_","")     '过滤SQL注入_


  Str=Replace(Str,"*","")     '过滤SQL注入*


  Str=Replace(Str," ","")     '过滤SQL注入空格


  Str=Replace(Str,chr(34),"")   '过滤SQL注入"


  Str=Replace(Str,chr(39),"")'过滤SQL注入'


  Str=Replace(Str,chr(91),"")'过滤SQL注入[


  Str=Replace(Str,chr(93),"")'过滤SQL注入]


  Str=Replace(Str,chr(37),"")'过滤SQL注入%


  Str=Replace(Str,chr(58),"")'过滤SQL注入:


  Str=Replace(Str,chr(59),"")'过滤SQL注入;


  Str=Replace(Str,chr(43),"")'过滤SQL注入+


  Str=Replace(Str,"{","")'过滤SQL注入{


  Str=Replace(Str,"}","")'过滤SQL注入}


  sqlcheck=Str'返回经过上面字符替换后的Str


end function 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐