https://github.com/GitHub-Laz...前端
傳統的防範暴力破解的方法是在前端登陸頁面增長驗證碼, 雖然能有必定程度效果, 可是用戶也跟着遭罪, 驗證碼越複雜, 用戶登陸的失敗率越高git
因而最近我想了一個新的設計, 前端在登陸時採用解密的方式獲取密鑰, 把密鑰與表單之前發日後端, 用密鑰來代替驗證碼github
具體細節以下後端
隨機字符串
和一個指定範圍內的隨機數
rstr+MD5(rstr+rint)
MD5(rint+rstr)
randomString = Utils.getUUID(); randomNumber = Utils.randomInt(range); privateText = randomString + Utils.md5(randomString+randomNumber); privateKey= Utils.md5(randomNumber+randomString);
let randomString = result.substring(0, 32) let valueString = result.substring(32) let answerString for (let i = 0; i < range; i++) { let s = crypto.createHash("md5").update(randomString + i).digest('hex') if (s == valueString) { answerString = crypto.createHash("md5").update(i + randomString).digest('hex') break } }
通過測試10000次內md5加密前端用時不超過300ms, 用戶察覺不到, 可是暴力破解的難道確增長了幾千倍, 這意味這原本一個小時能破解的網站, 如今可能要一年才能破解dom
歡迎關注個人博客公衆號
![]()