欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP+MSSQL2000 數(shù)據(jù)庫被批量注入后的解決方法

 更新時間:2009年02月20日 01:57:52   作者:  
這陣子,采用ASP+MSSQL設計的很多網(wǎng)站可能遭遇到sql數(shù)據(jù)庫被掛馬者插入JS木馬的經(jīng)歷;這不,朋友的一個網(wǎng)站就被黑客忽悠了一把

看暈了吧。這是利用HEX的方式進行SQL注入,可以繞過一般的IDS驗證,只要系統(tǒng)存在SQL注入,上面的代碼將會被執(zhí)行,通過游標遍歷數(shù)據(jù)庫中的所有表和列并在列中插入js代碼。

解決辦法:1 嚴格過濾 request.form 和 request.querystring 獲取的內容,堅決不用 request("name") 這樣的方式獲取值,凡是采用 cookies 保存的內容,盡量不要用在sql語句里進行查詢數(shù)據(jù)庫操作;2 重要的用戶資料盡量采用 session 驗證,因為session是服務器端的,客戶端無法偽造數(shù)

可以采用以下的防范 get 、post以及cookies 注入的代碼來過濾 sql 注入攻擊:
復制代碼 代碼如下:

<%
Response.Buffer = True '緩存頁面
'防范get注入
If Request.QueryString <> "" Then StopInjection(Request.QueryString)
'防范post注入
If Request.Form <> "" Then StopInjection(Request.Form)
'防范cookies注入
If Request.Cookies <> "" Then StopInjection(Request.Cookies)

'正則子函數(shù)
Function StopInjection(Values)
Dim regEx
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "'|;|#|([\s\b+()]+([email=select%7Cupdate%7Cinsert%7Cdelete%7Cdeclare%7C@%7Cexec%7Cdbcc%7Calter%7Cdrop%7Ccreate%7Cbackup%7Cif%7Celse%7Cend%7Cand%7Cor%7Cadd%7Cset%7Copen%7Cclose%7Cuse%7Cbegin%7Cretun%7Cas%7Cgo%7Cexists)[/s/b]select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|retun|as|go|exists)[\s\b[/email]+]*)"
Dim sItem, sValue
For Each sItem In Values
sValue = Values(sItem)
If regEx.Test(sValue) Then
Response.Write "<Script Language=javascript>alert('非法注入!你的行為已被記錄??!');history.back(-1);</Script>"
Response.End
End If
Next
Set regEx = Nothing
End function
%>

把以上的代碼另存為一個文件,如 antisql.asp ,然后在數(shù)據(jù)庫連接文件開頭包含這個文件 <!--#include file="antisql.asp"--> ,就可以實現(xiàn)全站的防范 sql 注入的攻擊了。

第三,嚴格過濾外部提交數(shù)據(jù)。判斷提交頁面的來源,如果不是當前站點,則拒絕提交??梢詤⒖家韵碌拇a,雖然來源網(wǎng)址可以偽造,但有這樣的判斷,畢竟可以阻擋那些沒有技術含量的惡意提交:
復制代碼 代碼如下:

<%''判斷來源,禁止外部提交
dim server_v1,server_v2
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if server_v1="" or instr(server_v1,"發(fā)表頁面名")<=0 or mid(server_v1,8,len(server_v2))<>server_v2 then
response.write "<SCRIPT language=JavaScript>alert('來源非法,禁止外部提交!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if%>

第四,做好服務器權限的分配。對于數(shù)據(jù)庫的權限,盡量分配最小的權限給用戶使用,如果把sa或管理員的權限分下來,一旦被攻擊淪陷,這將是一個毀滅性的打擊。mssql 的1433端口,飄易建議不用的時候,最好關閉。 

       總之,安全問題是一個綜合的問題,一個小的細節(jié),可能讓你的幾個月甚至幾年的心血付之東流。我們不僅要從程序上著手每個細節(jié),而且要仔細做好服務器的安全工作,對于虛擬主機的用戶,還要防范服務器上的跨站攻擊。細節(jié)決定成敗。

相關文章

最新評論