該如何防範其他網站密碼洩露拿來嘗試我們網站

最近常有駭客用其他網站的密碼洩露在我們網站上嘗試,
要是使用者重複使用同一個密碼當然就能被駭客登入。
關於這種情況,有人有經驗過嗎?
或是網路上有文章專門探討這一塊嗎?(我看到的文章都是寫給使用者而不是開發者的)

攻擊有好幾種

DDOS 只能提高防火牆能力 做被動阻擋(沒完全解)

亂TRY密碼的

可以參考這一篇

你可以做一個簡單機制 每TRY錯5次就把該位置的IP寫到指定資料表

如果惡意去TRY 你一定看的出來 在設定禁訪IP之類的

或是限制台灣網域才可以瀏覽 都可以達到一定程度的防堵

但不是完美解 只是有點被動的方式

captcha 與 移除煩人的 captcha 策略

captcha 可以用 OCR 軟體來做驗證是否能被破解,類似 Tesseract,不過太簡單的都不建議使用,如果沒有對岸網民的話,改用 reCaptcha 就可以了

除了 captcha 外建議增加 Two-factor authentication,也就是 OTP 系列

而 OTP 系列有分:Time base OTP(有 Google Authenticator 放在手機內用) or SMS OTP(簡訊動態密碼) 則一使用

Time base OTP 用這個其他自己幹就好

而 SMS OTP 就自己產的哩,建議用 SecureRandom 來產生就是,缺點是要串簡訊商 API 然後要花簡訊費用

目前防止到這邊就算安全了就是

感謝,後來想想好像可以這樣做:
把洩露的 email 跟密碼拿來網站去一個個嘗試。
要是密碼相同感覺 hash 密碼也會一致。
這樣就能主動跟使用者說請換密碼了。

@JokerCatz 你提到要是駭客有很多免洗 ip 的話,
我也是覺得這個時候一個個檔 IP 就不是很有效率。
我覺得你的那個方法不錯用。