可以參考前一篇部落格:
我們先考慮一種機器自動攻擊的情形:
比如攻擊者通過程式,每10秒鐘訪問登入介面,並且使用者名稱和密碼都一樣,當然密碼是錯誤的.
如何防止這種攻擊呢?
方案一:
(1)登入失敗,則開始計數;
(2)判斷失敗次數是否超過10(次數可以定製),若超過,則直接返回response code為401(無權訪問)
,若沒有超過,繼續訪問資料庫進行登入驗證,登入失敗
則失敗次數加1
(3)登入失敗,判斷與之前登入失敗的密碼是否一致,若一致,則失敗次數加1;若不一致,則執行(1);
那麼有個問題:
判斷失敗次數是否超過10,則直接返回response code為401,萬一修改了密碼,原錯誤密碼是正確的怎麼辦呢?
判斷超過10次的基礎上,再判斷與上次登入相距多久,如果超過1個小時,則仍然查資料庫.
(4)若登入成功,則失敗次數減1
注意:每個錯誤密碼都對應自身失敗的次數,而不是所有錯誤登入一起計算的.
前10次,還是會查詢資料庫.後面的登入(相同的錯誤密碼)就不會查詢資料庫了,什麼也不做直接設定response 的status為401.
為什麼要處理?有人說就讓它登入唄,反正密碼是錯誤的,又登入不進去!
但是這些無效的請求依然會訪問資料庫,無謂地增加系統負擔,所以必須要考慮應對方案.
方案二:
相同的錯誤密碼,連續登入3次之後,後面的登入,直接匹配使用者名稱和密碼是否一致,若一致,則直接返回登入失敗資訊,不一致才真正訪問資料庫.
(a)登入失敗,判斷是否有該錯誤密碼的記錄,若有,則失敗次數+1;若沒有則增加記錄,錯誤次數設定為1;
(b)判斷失敗次數是否超過3,超過則直接返回登入失敗,不查詢資料庫;否則,查詢資料庫;
(c)若修改密碼,則清除該使用者所有的錯誤密碼記錄.
可以參考前一篇部落格:
防重放攻擊
以前總是通過timestamp來防止重放攻擊,但是這樣並不能保證每次請求都是一次性的。今天看到了一篇文章介紹的通過nonce number used once 來保證一次有效,感覺兩者結合一下,就能達到乙個非常好的效果了。重放攻擊是計算機世界黑客常用的攻擊方式之一,所謂重放攻擊就是攻擊者傳送乙個目的...
redis漏洞防攻擊
redis伺服器遭攻擊,症狀 1.redis中的快取資料每10分鐘全部被清 2.許多目錄下多了root檔案和一堆隱藏檔案 3.redis多了三個key backup1 backup2 backup3 key值對應的內容如下 backup1 2 curl s cmd bash cmd backup2 ...
防cc攻擊策略
黑客攻擊你的 會採取各種各樣的手段,其中為了降低你 的訪問速度,甚至讓你的伺服器癱瘓,它會不斷的重新整理你的 或者模擬很多使用者同一時間大量的訪問你的 using system using system.configuration using system.data using system.web...