在暴力破解中,最常見的防範方法就是驗證碼。
驗證碼的認證流程:
客戶端request登錄頁面,後臺生成驗證碼:
1.後臺使用算法生成圖片,並將圖片response給客戶端
2.同時將算法生成的值全局賦值存到session中
然後校驗驗證碼:
1.客戶端將認證信息和驗證碼一同提交
2.後臺對提交的驗證碼與session裏面的進行比較
如果客戶端刷新頁面,再次生成新的驗證碼
驗證碼算法中一般包含隨機函數,所以每次刷新都會改變
不安全的驗證碼-on client常見問題
使用前端js實現驗證碼(紙老虎)
將驗證碼在cookie中泄漏,容易被獲取
將驗證碼在前端源代碼中泄漏,容易被獲取
不安全的驗證碼-onserver常見問題
驗證碼在後臺不過期。導致可以長期被使用
驗證碼校驗不合格,邏輯出現問題
驗證碼涉及的太過簡單和有規律,容易被猜解
防範措施
設計安全的驗證碼(安全的流程+複雜而又可用的圖形)
對認證錯誤的提交進行計數並給出限制,比如連續5次密碼錯誤,鎖定2小時
必要的情況下,使用雙因素認證。
token防爆破嗎
一般情況下,將token以type=hidden的形式輸出在表單中
在提交認證的時候一起提交,並在後臺對其進行校驗
但是,由於token值輸出在了前端源碼中,容易被獲取,因此也就失去了防暴力破解的意義,一般token在防止CSRF上會有比較好的功效