标题:牛人给的函数,据说用了SQL注入彻底没用
以下是根据我对反注入的经验的,和专门从事注射入侵的朋探讨后,在绝对安全的前提下,过滤得最少,最友好的防注入方法。总结为三个函数:
1.数字型变量:用isNumeric()判断是否为数字
'----------------------------------------------------------------
' 获取数字型参数
'----------------------------------------------------------------
Function ReqNum ( StrName )
ReqNum = Request ( StrName )
if not isNumeric ( ReqNum ) then
response.write "参数必须为数字型!"
response.end
end if
End Function
2.字符型或其它类型变量:将单引号'替换成两个,这个没啥问题,相信都会。
'----------------------------------------------------------------
' 获取字符型参数
'----------------------------------------------------------------
Function ReqStr ( StrName )
ReqStr = Replace ( Request(StrName), "'", "''" )
End Function
3.这个函数非常关键,结合第二个函数,用来代替ASP的Request函数。
Function sqlstr(data) '过滤字符串
data = Trim(Replace(Request(data), "&", "&"))
data = replace(data, "<", "<")
data = replace(data, ">", ">")
data = replace(data, "'", """")
data = replace(data, "*", "")
data = replace(data, "?", "")
data = replace(data, "select", "")
data = replace(data, "insert", "")
data = replace(data, "delete", "")
data = replace(data, "update", "")
data = replace(data, "delete", "")
data = replace(data, "create", "")
data = replace(data, "drop", "")
data = replace(data, "declare", "")
data = replace(data, vbCrLf&vbCrlf, "</p><p>")
data = replace(data, vbCrLf, "<br/>")
sqlstr = (data)
End Function
如果你觉得还差一些,可以自己添。
第三个函数非常重要,希望你能在用第二个函数过滤的地方尽快附加使用上。不要怕麻烦,切记一定要更新一下你的代码,切记,重要!!!
以上三个函数,只要对每处输入的地方都使用这两个函数取值,以现在的入段,SQL注入根本没有用武之地.
以下是根据我对反注入的经验的,和专门从事注射入侵的朋探讨后,在绝对安全的前提下,过滤得最少,最友好的防注入方法。总结为三个函数:
1.数字型变量:用isNumeric()判断是否为数字
'----------------------------------------------------------------
' 获取数字型参数
'----------------------------------------------------------------
Function ReqNum ( StrName )
ReqNum = Request ( StrName )
if not isNumeric ( ReqNum ) then
response.write "参数必须为数字型!"
response.end
end if
End Function
2.字符型或其它类型变量:将单引号'替换成两个,这个没啥问题,相信都会。
'----------------------------------------------------------------
' 获取字符型参数
'----------------------------------------------------------------
Function ReqStr ( StrName )
ReqStr = Replace ( Request(StrName), "'", "''" )
End Function
3.这个函数非常关键,结合第二个函数,用来代替ASP的Request函数。
Function sqlstr(data) '过滤字符串
data = Trim(Replace(Request(data), "&", "&"))
data = replace(data, "<", "<")
data = replace(data, ">", ">")
data = replace(data, "'", """")
data = replace(data, "*", "")
data = replace(data, "?", "")
data = replace(data, "select", "")
data = replace(data, "insert", "")
data = replace(data, "delete", "")
data = replace(data, "update", "")
data = replace(data, "delete", "")
data = replace(data, "create", "")
data = replace(data, "drop", "")
data = replace(data, "declare", "")
data = replace(data, vbCrLf&vbCrlf, "</p><p>")
data = replace(data, vbCrLf, "<br/>")
sqlstr = (data)
End Function
如果你觉得还差一些,可以自己添。
第三个函数非常重要,希望你能在用第二个函数过滤的地方尽快附加使用上。不要怕麻烦,切记一定要更新一下你的代码,切记,重要!!!
以上三个函数,只要对每处输入的地方都使用这两个函数取值,以现在的入段,SQL注入根本没有用武之地.