菜鸟的ASP防注入函数
http://www.luos.org罗良富
将下面的函数复制到你的公共文件 conn.asp、config.asp、const.asp、或 common.asp 的任意一个中:
<%
dim sqlstr
Function sqlcheck(Str)
sqlstr=str
IF instr(sqlstr," ")>0 _
or instr(sqlstr,"'")>0 _
or instr(sqlstr,"_")>0 _
or instr(sqlstr,"*")>0 _
or instr(sqlstr,"[")>0 _
or instr(sqlstr,"]")>0 _
or instr(sqlstr,":")>0 _
or instr(sqlstr,";")>0 _
or instr(sqlstr,"+")>0 _
or instr(sqlstr,"{")>0 _
or instr(sqlstr,"}")>0 _
or instr(sqlstr,".")>0 _
or instr(sqlstr,",")>0 Then
Response.Write("<script>alert(""喂,朋友,不要在参数中包含非法字符尝试注入!\n"+"如果是善意测试,发现有漏洞请告诉我,谢谢!"");window.location.replace('default.asp');</script>") '重定向到你的首页
response.end
End IF
End Function
%>
如果你觉得还不放心,就把你想要过滤的字符按上面的形式加上去吧。当然,如果你觉得没有必要过滤那么多,也可减去一些,但打头那两个一定留着,要不你就别往下看了。
然后,在你需要的地方(其实也就是“ID”调研的地方)调用上面的函数进行检查就是了。
即在用“ID”具体调用之前,一句 sqlcheck(Request("id")) 就ok啦。
不过要注意,“ID”的形式是多样的,比如动网文章吧,就有“classid”、“Nclassid”、和“id”三个,都要检查哦。不过也就只有三几个地方。
这个函数写得很“土”很“烂”,不过到真管用。并且菜鸟都看得懂,也能修改呢。
如果有兴趣,就试试。
|