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