近段时间由于修改一个ASP程序(有SQL注入漏洞),在网上找了很多相关的一些防范办法,都不近人意,所以我将现在网上的一些方法综合改良了一下,写出这个ASP函数,供大家参考。
以下是引用片段
Function SafeRequest(ParaName)
Dim ParaValue
ParaValue=Request(ParaName)
if IsNumeric(ParaValue) = True then
SafeRequest=ParaValue
exit Function
elseIf Instr(LCase(ParaValue),"select ") %26gt; 0 or Instr(LCase(ParaValue),"insert ") %26gt; 0 or Instr(LCase(ParaValue),"delete from") %26gt; 0 or Instr(LCase(ParaValue),"count(") %26gt; 0 or Instr(LCase(ParaValue),"drop table") %26gt; 0 or Instr(LCase(ParaValue),"update ") %26gt; 0 or Instr(LCase(ParaValue),"truncate ") %26gt; 0 or Instr(LCase(ParaValue),"asc(") %26gt; 0 or Instr(LCase(ParaValue),"mid(") %26gt; 0 or Instr(LCase(ParaValue),"char(") %26gt; 0 or Instr(LCase(ParaValue),"xp_cmdshell") %26gt; 0 or Instr(LCase(ParaValue),"exec master") %26gt; 0 or Instr(LCase(ParaValue),"net localgroup administrators") %26gt; 0 or Instr(LCase(ParaValue)," and ") %26gt; 0 or Instr(LCase(ParaValue),"net user") %26gt; 0 or Instr(LCase(ParaValue)," or ") %26gt; 0 then
Response.Write "%26lt;script language='javascript'%26gt;"
Response.Write "alert('非法的请求!');" '发现SQL注入攻击提示信息
Response.Write "location.href='http://blog.knowsky.com/';" '发现SQL注入攻击转跳网址
Response.Write "%26lt;script%26gt;"
Response.end
else
SafeRequest=ParaValue
End If
End function
使用SafeRequest函数替换你的Request
