日期:2014-05-16  浏览次数:20871 次

看这篇文章真的防住注入吗?ASP防SQL注入终极防范实例是否有用请高手解答
本帖最后由 xiaota 于 2013-01-29 19:20:25 编辑
ASP防SQL注入终极防范实例 

 注意要对所有的request对象进行过滤:包括 request.cookie, request.ServerVariables 等等容易被忽视的对象:

    程序代码


function killn(byval s1) '过滤数值型参数
if not isnumeric(s1) then 
killn=0
else
if s1<0 or s1>2147483647 then 
killn=0
else
killn=clng(s1)
end if
end if
end function

function killc(byval s1) '过滤货币型参数
if not isnumeric(s1) then 
killc=0
else
killc=formatnumber(s1,2,-1,0,0)
end if
end function

function killw(byval s1) '过滤字符型参数
if len(s1)=0 then
killw=""
else
killw=trim(replace(s1,"'",""))
end if
end function

function killbad(byval s1) '过滤所有危险字符,包括跨站脚本
If len(s1) = 0 then
killbad=""
else
killbad = trim(replace(replace(replace(replace
(replace(replace(replace(replace(s1,Chr(10), "<br>"), 
Chr(34), """), ">", "&gt;"), "<", "&lt;"), "&", "&"),
chr(39),"'"),chr(32)," "),chr(13),""))
end if
end function 


------解决方案--------------------
不需要特别用过滤函数,一些正常的字符也被过滤掉了。
防止sql注入,只要不拼接SQL, 直接用ADO记录集的方法来增删改即可。
输入的内容如果是用来在页面上显示的(确定不包含HTML代码时),输出的时候时候要把<>转换掉。
------解决方案--------------------
可以,有用。第四个不应该是过滤,是转换。