如何防御SQL注入代码攻击
如果您的站点首页被人修改,如果您的网站数据库被人盗用,这些很多都是因为站点程序设计不当,导致黑客找到了SQL注入的漏洞,请您确保站点经过如下的SQL防注入操作。
<%
Const EnableStopInjection = True '是否启用防SQL注入功能,True为启用,False为禁用
If EnableStopInjection = True Then
If Request.QueryString <> "" Then Call StopInjection(Request.QueryString)
If Request.Cookies <> "" Then Call StopInjection(Request.Cookies)
Dim sScriptName
sScriptName = Trim(Request.ServerVariables("SCRIPT_NAME"))
If LCase(Mid(sScriptName, InStrRev(sScriptName, "/") + 1)) <> "upfile.asp" Then
'If Request.Form <> "" Then StopInjection2(Request.Form)
Call StopInjection2(Request.Form)
End If
End If
Sub StopInjection(Values)
Dim regEx
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "'|;|#|([\s\b+()]+
(select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|ret
un|as|go|exists)[\s\b+]*)"
Dim sItem, sValue
For Each sItem In Values
sValue = Values(sItem)
If regEx.Test(sValue) Then
Response.Write "很抱歉,由于您提交的内容中含有危险的SQL注入代码,致使本次操作无效!<br><br>如果您是正常提交仍出现
上面的提示,请联系站长修改Config.asp文件的第7行,暂时禁用掉防SQL注入功能,操作完成后再打开。"
Response.End
End If
Next
Set regEx = Nothing
End Sub
Sub StopInjection2(Values)
Dim regEx
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "[';#()][\s+()]*
(select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|ret
un|as|go|exists)[\s+]*"
Dim sItem, sValue
For Each sItem In Values
sValue = Values(sItem)
If regEx.Test(sValue) Then
Response.Write "很抱歉,由于您提交的内容中含有危险的SQL注入代码,致使本次操作无效!<br><br>如果您是正常提交仍出现
上面的提示,请联系站长修改Config.asp文件的第7行,暂时禁用掉防SQL注入功能,操作完成后再打开。"
Response.End
End If
Next
Set regEx = Nothing
End Sub
%>