防范方法
說了攻擊原理,大家肯定會問,那么怎么防御?使用硬件防火墻我不知道如何防范,除非你完全屏蔽頁面訪問,我的方法是通過頁面的編寫實現(xiàn)防御。
1. 使用Cookie認(rèn)證。這時候朋友說CC里面也允許Cookie,但是這里的Cookie是所有連接都使用的,所以啟用IP+Cookie認(rèn)證就可以了。
2. 利用Session。這個判斷比Cookie更加方便,不光可以IP認(rèn)證,還可以防刷新模式,在頁面里判斷刷新,是刷新就不讓它訪問,沒有刷新符號給它刷新符號。給些示范代碼吧,Session:
<%if session(“refresh”)<> 1 then
Session(“refresh”)=session(“refresh”)+1
Response.redirect “index.asp”
End if
%>
這樣用戶第一次訪問會使得Refresh=1,第二次訪問,正常,第三次,不讓他訪問了,認(rèn)為是刷新,可以加上一個時間參數(shù),讓多少時間允許訪問,這樣就限制了耗時間的頁面的訪問,對正??蛻魩缀鯖]有什么影響。
3. 通過代理發(fā)送的HTTP_X_FORWARDED_FOR變量來判斷使用代理攻擊機(jī)器的真實IP,這招完全可以找到發(fā)動攻擊的人,當(dāng)然,不是所有的代理服務(wù)器都發(fā)送,但是有很多代理都發(fā)送這個參數(shù)。詳細(xì)代碼:
Dim fsoObject
Dim tsObject
dim file
if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then
response.write "無代理訪問"
response.end
end if
Set fsoObject = Server.CreateObject("Scripting.FileSystemObject")
l file = server.mappath("CCLog.txt")
if not fsoObject.fileexists(file) then
fsoObject.createtextfile file,true,false ;W9BE k0lJ
end if P
set tsObject = fsoObject.OpenTextFile(file,8)
tsObject.Writeline Request.ServerVariables("HTTP_X_FORWARDED_FOR")&"["&Request.ServerVariables("REMOTE_ADDR")&"]"&now()
Set fsoObject = Nothing
Set tsObject = Nothing
response.write "有代理訪問"
%>
這樣會生成CCLog.txt,它的記錄格式是:真實IP [代理的IP] 時間,看看哪個真實IP出現(xiàn)的次數(shù)多,就知道是誰在攻擊了。將這個代碼做成Conn.asp文件,替代那些連接數(shù)據(jù)庫的文件,這樣所有的數(shù)據(jù)庫請求就連接到這個文件上,然后馬上就能發(fā)現(xiàn)攻擊的人。
還有一個方法就是把需要對數(shù)據(jù)查詢的語句做在Redirect后面,讓對方必須先訪問一個判斷頁面,然后Redirect過去。
5. 在存在多站的服務(wù)器上,嚴(yán)格限制每一個站允許的IP連接數(shù)和CPU使用時間,這是一個很有效的方法。
CC的防御要從代碼做起,其實一個好的頁面代碼都應(yīng)該注意這些東西,還有SQL注入,不光是一個入侵工具,更是一個DDOS缺口,大家都應(yīng)該在代碼中注意。舉個例子吧,某服務(wù)器,開動了5000線的CC攻擊,沒有一點(diǎn)反應(yīng),因為它所有的訪問數(shù)據(jù)庫請求都必須一個隨機(jī)參數(shù)在Session里面,全是靜態(tài)頁面,沒有效果。突然發(fā)現(xiàn)它有一個請求會和外面的服務(wù)器聯(lián)系獲得,需要較長的時間,而且沒有什么認(rèn)證,開800線攻擊,服務(wù)器馬上滿負(fù)荷了