〈%
if session(“refresh”)〈〉 1 then
Session(“refresh”)=session(“refresh”) 1
Response.redirect “index.asp”
End if
%〉
這樣用戶第一次訪問會使得Refresh=1,第二次訪問,正常,第三次,不讓他訪問了,認為是刷新,可以加上一個時間參數,讓多少時間允許訪問,這樣就限制了耗時間的頁面的訪問,對正?蛻魩缀鯖]有什么影響.
3.通過代理發送的HTTP_X_FORWARDED_FOR變量來判斷使用代理攻擊機器的真實IP,這招完全可以找到發動攻擊的人,當然,不是所有的代理服務器都發送,但是有很多代理都發送這個參數.詳細代碼:
程序代碼:
〈%
Dim fsoObject
DimtsObject
dim file
ifRequest.ServerVariables(HTTP_X_FORWARDED_FOR)= then
response.write無代理訪問
response.end
endif
Set fsoObject =Server.CreateObject(scrīpting.FileSystemObject)
file = server.mappath(CCLog.txt)
if notfsoObject.fileexists(file)then
fsoObject.createtextfilefile,true,false
end if
settsObject = fsoObject.OpenTextFile(file,8)
tsObject.WritelineRequest.ServerVariables(HTTP_X_FORWARDED_FOR)&[&Request.ServerVariables(REMOTE_ADDR)&]&now()
Set fsoObject = Nothing
Set tsObject =Nothing
response.write有代理訪問
%〉
這樣會生成CCLog.txt,它的記錄格式是:真實IP [代理的IP]時間,看看哪個真實IP出現的次數多,就知道是誰在攻擊了.將這個代碼做成Conn.asp文件,替代那些連接數據庫的文件,這樣所有的數據庫請求就連接到這個文件上,然后馬上就能發現攻擊的人.
4.還有一個方法就是把需要對數據查詢的語句做在Redirect后面,讓對方必須先訪問一個判斷頁面,然后Redirect過去.
5.在存在多站的服務器上,嚴格限制每一個站允許的IP連接數和CPU使用時間,這是一個很有效的方法.
CC的防御要從代碼做起,其實一個好的頁面代碼都應該注意這些東西,還有SQL注入,不光是一個入侵工具,更是一個DDOS缺口,大家都應該在代碼中注意.舉個例子吧,某服務器,開動了5000線的CC攻擊,沒有一點反應,因為它所有的訪問數據庫請求都必須一個隨機參數在Session里面,全是靜態頁面,沒有效果.突然發現它有一個請求會和外面的服務器聯系獲得,需要較長的時間,而且沒有什么認證,開800線攻擊,服務器馬上滿負荷了.
代碼層的防御需要從點點滴滴做起,一個腳本代碼的錯誤,可能帶來的是整個站的影響,甚至是整個服務器的影響,慎之!
文章來源于領測軟件測試網 http://www.k11sc111.com/