數據庫被惡意注入代碼是非常致命的問題,主要的手段有:利用程序漏洞,用一段程序就可以測試出來,主要體現在前臺提交的一些表單上沒有對非法字符進行過濾!那么我們如何防止注入呢?(這里只針對asp+MSSQL)
首先就是在程序中加上防止注入的過濾函數:
檢測非字符
SQL_injdata = "|exec|insert|||delete|set | || | |char | || ||mid( |asc( ||cast|declare|exec|varchar|<script|script|iframe|3bomb|c.js"
SQL_inj = split(SQL_Injdata,"|")
檢測GET
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(lcase(Request.QueryString(SQL_Get)),Sql_Inj(Sql_DATA))>0 Then
response.write "輸入非法,數據庫拒絕一些特殊的字符!"
Response.end
end if
next
Next
End If
檢測POST
If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(lcase(Request.Form(Sql_Post)),Sql_Inj(Sql_DATA))>0 Then
response.write "輸入非法,數據庫拒絕一些特殊的字符!"
Response.end
end if
next
next
end if
檢測cookie
If Request.Cookies<>"" Then
For Each Sql_Cookie In Request.Cookies
For SQL_Data=0 To Ubound(SQL_inj)
if instr(lcase(Request.Cookies(Sql_Cookie)),Sql_Inj(Sql_DATA))>0 Then
response.write "輸入非法,數據庫拒絕一些特殊的字符!"
Response.end
end if
next
next
end if
這樣就基本上把表單提交數據時的漏洞給堵死了!!從三個方面判斷,直接請求數據和表單提交或者cookies提交數據非法字符都會被過濾掉!
dim server_v1,server_v2
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
if server_v1<>"" then
if instr(server_v1,"3bomb")>0 then
response.write "<br><br><center><table border=1 cellpadding=20 bordercolor=black bgcolor=#EEEEEE width=450>"
response.write "<tr><td style=font:9pt Verdana>"
response.write "你提交的路徑有誤,禁止從站點外部提交數據請不要亂該參數!"
response.write "</td></tr></table></center>"
response.end
end if
else
server_v1=Cstr(Request.ServerVariables("SERVER_NAME"))
end if
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if instr(server_v1,"3bomb")>0instr(server_v2,"3bomb")>0 then
response.write "<br><br><center><table border=1 cellpadding=20 bordercolor=black bgcolor=#EEEEEE width=450>"
response.write "<tr><td style=font:9pt Verdana>"
response.write "你提交的路徑有誤,禁止從站點外部提交數據請不要亂該參數!"
response.write "</td></tr></table></center>"
response.end
end if
這段程序首先得到訪問你網站的來源,如果是從您知道的一個非法域名3bomb上過來就不讓他訪問。
這個就完成了對某一指定域名的屏蔽,這個域名極有可能就是一段媽媽程序!
禁止某些ip訪問 ---------------------
if instr(Request.ServerVariables("REMOTE_ADDR"),"209.172.33")>0 then
Response.Write "拒絕訪問"
response.End()
end if
實在不行就通過ip進行屏蔽,如果訪問來源是某一個ip段就進行屏蔽
這三招保證您的數據庫以后不在受注入的干擾,個人的親身體驗