2009-01-19 59 views
3

我想防止機器人黑客弱密碼保護帳戶。 (例如,這發生在易趣和其他大網站)防止密碼列表攻擊與Web應用程序的最佳做法

所以我會設置一個(內存)緩存值與ip,嘗試的數量和最後一次嘗試(memcache-fall-out)的時間戳。

但是,如果機器人嘗試用一個密碼打開任何帳戶,那該怎麼辦?例如,機器人嘗試使用密碼「password123」的所有500.000 Useraccounts。也許10將打開。

所以我的嘗試只是嘗試緩存ip,並設置最大嘗試爲50。我會在成功登錄後刪除它。所以好機器人只會每49次嘗試重新設置一次有效的賬號。

有什麼辦法可以做到嗎? 大平臺對此做了什麼? 我能做些什麼來防止白癡在重試50次的情況下阻止代理上的所有用戶?

如果沒有最佳實踐 - 這是否意味着任何平臺都是強制性的?至少在暗示重置計數器的時間?

回答

6

我認爲你可以混合使用驗證碼的解決方案:

  1. 計數每個IP的嘗試次數
  2. 如果有太多的嘗試從給定在給定時間內的IP地址,請在登錄表單中添加captcha
5

有些網站在開始讓您輸入驗證碼和您的用戶名/密碼之前,可能會嘗試兩次或三次。該驗證碼消失,一旦你成功登錄

+0

編輯您的帖子這裏幾次,看到這種行爲;-) – Xn0vv3r 2009-01-19 14:30:50

+0

哦,整齊,我沒有意識到他們做到了。他們甚至使用reCAPTCHA!儘管我喜歡KittenAuth,但我必須承認,幫助數字化圖書的驗證碼更好。 – 2009-01-19 14:34:28

2

儘管代碼集中在Django上,但關於最佳實踐方法on Simon Willison’s blog還是有一些非常好的討論。他使用memcached來跟蹤IP和登錄失敗。

1

當用戶設置他們的密碼以確保他們沒有使用簡單強制的密碼時,您可以使用password strength checker

編輯:只是要清楚,這不應該被看作是你想要解決的問題的完整解決方案,但它應該與其他一些答案一起考慮。

0

你永遠無法阻止一羣機器人從很多不同的IP地址嘗試這種方式。

來自同一IP地址:如果你看到的「可疑」的行爲(無效的用戶名,或使用不正確的登錄嘗試幾種有效的帳戶)的例子,只是阻止了幾秒鐘登錄我會說。如果它是合法用戶,他們不會介意等待幾秒鐘。如果它是一個機器人,這會減慢他們到不切實際的地步。如果您繼續看到來自IP地址的行爲,只是阻止他們 - 但離開了帶外的門爲合法用戶(呼叫電話#X,或發送電子郵件地址)。

0

請注意: IP地址可以在幾千或幾百萬用戶之間共享!例如,大多數/所有的AOL用戶顯示爲一個非常小的一組IP地址,由於AOL的網絡架構。大多數ISP將其龐大的用戶羣映射到一小部分公共IP地址。

您不能假設一個IP地址只屬於一個用戶。

您不能假定一個用戶將只使用一個IP地址。