數(shù)據(jù)庫被惡意注入代碼是非常致命的問題,主要的手段有:利用程序漏洞,用一段程序就可以測試出來,主要體現(xiàn)在前臺提交的一些表單上沒有對非法字符進(jìn)行過濾!那么我們?nèi)绾畏乐棺⑷肽?(這里只針對asp+MSSQL)
首先就是在程序中加上防止注入的過濾函數(shù):
檢測非字符
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 "輸入非法,數(shù)據(jù)庫拒絕一些特殊的字符!"
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 "輸入非法,數(shù)據(jù)庫拒絕一些特殊的字符!"
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 "輸入非法,數(shù)據(jù)庫拒絕一些特殊的字符!"
Response.end
end if
next
next
end if
這樣就基本上把表單提交數(shù)據(jù)時的漏洞給堵死了!從三個方面判斷,直接請求數(shù)據(jù)和表單提交或者cookies提交數(shù)據(jù)非法字符都會被過濾掉!
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 "你提交的路徑有誤,禁止從站點(diǎn)外部提交數(shù)據(jù)請不要亂該參數(shù)!"
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 "你提交的路徑有誤,禁止從站點(diǎn)外部提交數(shù)據(jù)請不要亂該參數(shù)!"
response.write "</td></tr></table></center>"
response.end
end if
這段程序首先得到訪問你網(wǎng)站的來源,如果是從您知道的一個非法域名3bomb上過來就不讓他訪問。
這個就完成了對某一指定域名的屏蔽,這個域名極有可能就是一段媽媽程序!
禁止某些ip訪問 ---------------------
if instr(Request.ServerVariables("REMOTE_ADDR"),"209.172.33")>0 then
Response.Write "拒絕訪問"
response.End()
end if
實(shí)在不行就通過ip進(jìn)行屏蔽,如果訪問來源是某一個ip段就進(jìn)行屏蔽
這三招保證您的數(shù)據(jù)庫以后不在受注入的干擾,個人的親身體驗