资讯专栏INFORMATION COLUMN

普通网站防暴力破解的新设计

xiaochao / 983人阅读

摘要:前端防暴力破解的一个设计地址描述传统的防范暴力破解的方法是在前端登录页面增加验证码虽然能有一定程度效果但是用户也跟着遭罪验证码越复杂用户登录的失败率越高于是最近我想了一个新的设计前端在登录时采用解密的方式获取密钥把密钥与表单以前发往后端用

前端防暴力破解的一个设计 Demo 地址

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

描述

传统的防范暴力破解的方法是在前端登录页面增加验证码, 虽然能有一定程度效果, 但是用户也跟着遭罪, 验证码越复杂, 用户登录的失败率越高

于是最近我想了一个新的设计, 前端在登录时采用解密的方式获取密钥, 把密钥与表单以前发往后端, 用密钥来代替验证码

具体细节如下

设计

用户在登录页面输完用户名密码, 点击登录

js 向后端请求密文

后端生成一个随机字符串和一个指定范围内的随机数

正向拼接 随机字符串 和 随机字符串随机数的加密 得到密文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, 用户察觉不到, 但是暴力破解的难道确增加了几千倍, 这意味这本来一个小时能破解的网站, 现在可能要一年才能破解

优势

整个流程对后端带来的压力几乎为0

用户无需输入验证码

前端延时极小(对人来说)

对暴力破解影响极大

只需添加部分代码, 无需更改现有的代码

条件可控, 随机数的范围完全由后端决定

欢迎关注我的博客公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71622.html

相关文章

  • 普通网站防暴破解新设

    摘要:前端防暴力破解的一个设计地址描述传统的防范暴力破解的方法是在前端登录页面增加验证码虽然能有一定程度效果但是用户也跟着遭罪验证码越复杂用户登录的失败率越高于是最近我想了一个新的设计前端在登录时采用解密的方式获取密钥把密钥与表单以前发往后端用 前端防暴力破解的一个设计 Demo 地址 https://github.com/GitHub-Laz... 描述 传统的防范暴力破解的方法是在前端登...

    stackvoid 评论0 收藏0
  • 程序员练级攻略(2018):前端 UI/UX设

    摘要:前端还有一个很重要的事就是设计。,中文版译名为认知与设计理解设计准则。实验室是布拉德弗罗斯特依照这个设计系统所建立的一套工具,可以前往的来试试。中文翻译为流畅设计体系,是微软于年开发的设计语言。微软于年月日的开发者大会上公开了该设计体系。 showImg(https://segmentfault.com/img/bVbkgFI?w=1142&h=640); 想阅读更多优质文章请猛戳Gi...

    dongfangyiyu 评论0 收藏0
  • 前端性能优化(针对内容方面)

    摘要:避免重定向重定向用和状态码,下面是一个有状态码的头浏览器会自动跳转到域指明的。除此之外还有别的跳转方式元标签和,但如果你必须得做重定向,最好用标准的状态码,主要是为了让返回按钮能正常使用。要提高性能,优化这些响应至关重要。 性能优化 减少Http请求: 1.尽量减少HTTP请求数   80%的终端用户响应时间都花在了前端上,其中大部分时间都在下载页面上的各种组件:图片,样式表,脚本,...

    coordinate35 评论0 收藏0
  • 前端性能优化(针对内容方面)

    摘要:避免重定向重定向用和状态码,下面是一个有状态码的头浏览器会自动跳转到域指明的。除此之外还有别的跳转方式元标签和,但如果你必须得做重定向,最好用标准的状态码,主要是为了让返回按钮能正常使用。要提高性能,优化这些响应至关重要。 性能优化 减少Http请求: 1.尽量减少HTTP请求数   80%的终端用户响应时间都花在了前端上,其中大部分时间都在下载页面上的各种组件:图片,样式表,脚本,...

    coordinate35 评论0 收藏0

发表评论

0条评论

xiaochao

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<