亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

普通網(wǎng)站防暴力破解的新設(shè)計(jì)

xiaochao / 1038人閱讀

摘要:前端防暴力破解的一個(gè)設(shè)計(jì)地址描述傳統(tǒng)的防范暴力破解的方法是在前端登錄頁面增加驗(yàn)證碼雖然能有一定程度效果但是用戶也跟著遭罪驗(yàn)證碼越復(fù)雜用戶登錄的失敗率越高于是最近我想了一個(gè)新的設(shè)計(jì)前端在登錄時(shí)采用解密的方式獲取密鑰把密鑰與表單以前發(fā)往后端用

前端防暴力破解的一個(gè)設(shè)計(jì) Demo 地址

https://github.com/GitHub-Laz...

描述

傳統(tǒng)的防范暴力破解的方法是在前端登錄頁面增加驗(yàn)證碼, 雖然能有一定程度效果, 但是用戶也跟著遭罪, 驗(yàn)證碼越復(fù)雜, 用戶登錄的失敗率越高

于是最近我想了一個(gè)新的設(shè)計(jì), 前端在登錄時(shí)采用解密的方式獲取密鑰, 把密鑰與表單以前發(fā)往后端, 用密鑰來代替驗(yàn)證碼

具體細(xì)節(jié)如下

設(shè)計(jì)

用戶在登錄頁面輸完用戶名密碼, 點(diǎn)擊登錄

js 向后端請(qǐng)求密文

后端生成一個(gè)隨機(jī)字符串和一個(gè)指定范圍內(nèi)的隨機(jī)數(shù)

正向拼接 隨機(jī)字符串 和 隨機(jī)字符串隨機(jī)數(shù)的加密 得到密文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);

將密文傳給前端

前端通過循環(huán)破解隨機(jī)數(shù)

    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
        }
    }

把得到的密鑰和表單一起傳個(gè)后端

后端驗(yàn)證密鑰的真假

測(cè)試

經(jīng)過測(cè)試10000次內(nèi)md5加密前端用時(shí)不超過300ms, 用戶察覺不到, 但是暴力破解的難道確增加了幾千倍, 這意味這本來一個(gè)小時(shí)能破解的網(wǎng)站, 現(xiàn)在可能要一年才能破解

優(yōu)勢(shì)

整個(gè)流程對(duì)后端帶來的壓力幾乎為0

用戶無需輸入驗(yàn)證碼

前端延時(shí)極小(對(duì)人來說)

對(duì)暴力破解影響極大

只需添加部分代碼, 無需更改現(xiàn)有的代碼

條件可控, 隨機(jī)數(shù)的范圍完全由后端決定

歡迎關(guān)注我的博客公眾號(hào)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/71622.html

Failed to recv the data from server completely (SIZE:0/8, REASON:closed)