【问题标题】:Guidelines for a Password Strength Meter (Password checker) Design [closed]密码强度计(密码检查器)设计指南[关闭]
【发布时间】:2011-01-05 16:56:01
【问题描述】:

我尝试了不同类型的密码强度计或密码检查器,但是当我测试相同的密码时,它们都会给出不同的结果,因为每个都实现了自己的算法。

是否有一些官方标准或指南可以遵循我来构建自己的密码强度计。

如果没有官方标准,好的密码强度计应该检查哪些功能?

【问题讨论】:

  • 我认为算法的标准化会削弱其强度,因为犯罪分子在尝试破解密码时会利用一套定义明确且定义明确的规则。如果我知道密码有 2-3 个数字、5-6 个字母和一小组标点符号中的 1 个,那么破解您的密码会比我对您的特定标准更加一无所知要容易得多。不是答案,我知道。

标签: passwords password-checker


【解决方案1】:

应根据几个参数检查密码的强度,例如是否存在特殊字符和数字、密码的长度等。

请查看此链接:

http://tinytute.com/2014/06/03/animated-password-strength-checker-quick-easy/

jQuery 代码块:

$(document).ready(function(){

$("#textBox").keyup(function(){

    var passWord = $("#textBox").val();
    var passLength = passWord.length;
    var specialFlag = 0;
    var numberFlag = 0;
    var numberGenerator = 0;
    var total = 0;

    if(/^[a-zA-Z0-9- ]*$/.test(passWord) == false) {

        specialFlag =20;
    }


    if(passWord.match(/[0-9]/)) {

        numberFlag = 25;
    }

    if(passLength>4&&passLength<=6){
        numberGenerator =25;
    }else if(passLength>=7&&passLength<=9){
        numberGenerator =35;
    }else if(passLength>9){
        numberGenerator =55;
    }else if(passLength>0&&passLength<=4){
        numberGenerator =15;
    }else{
        numberGenerator =0;
    }

    total = numberGenerator + specialFlag + numberFlag;
    if(total<30){
        $('#progressBar').css('background-color','#CCC');
    }else if(total<60&&total>=30){

        $('#progressBar').css('background-color','#FF6600');

    }else if(total>=60&&total<90){

        $('#progressBar').css('background-color','#FFCC00');

    }else if(total>=90){

        $('#progressBar').css('background-color','#0f0');

    }
    $('#progressBar').css('width',total+'%');

});

});

【讨论】:

    【解决方案2】:

    有许多指南 (google) 提供了关于什么是强密码的指导,其中大部分是常识。归根结底,您可以将自己的政策(或公司政策,如果他们有政策)应用在哪些强项和哪些项不是强项上,您的决定可能会受到您要保护的内容的影响。

    正如@jay 所说,我认为标准化这样的事情不是明智的做法!

    http://net.tutsplus.com/tutorials/javascript-ajax/build-a-simple-password-strength-checker/

    http://www.ibm.com/developerworks/lotus/library/ls-password_quality/index.html#N100F5

    觉得这个网站特别好,因为它提供了他们正在应用的算法以及他们如何计算强度的想法。

    http://www.passwordmeter.com/

    【讨论】:

      【解决方案3】:

      据我所知,没有标准,因为有很多关于好的(即强)密码应该是什么的定义。

      需要考虑的一些事项:

      • 长度 - 越长越好
      • 混合大小写
      • 包括数字和字符
      • 包括非字母数字字符
      • 不是字典里的词
      • 是一个短语

      等等

      【讨论】:

      • “不包括字母数字字符”?您刚刚在“包括数字和字符”之前的行中说的是字母数字?
      【解决方案4】:

      考虑以下几点:

      • 长度
      • 混合大小写
      • 重复字符不多
      • 包括字母、数字和符号
      • 不包括用户名的一部分
      • 与以前的密码不同
      • 不散列到与弱密码相同的东西
      • 不是键盘行走
      • 与个人无关
      • 不以常用后缀结尾
      • 不以通用前缀开头

      请参阅 Bruce Schneier 的 post on passwordsthis post

      【讨论】:

      • 伟大的 Schneier 文章。非常有用。谢谢。
      【解决方案5】:

      我将在戒指中提出另一个标准:

      • 没有“键盘走动”

      因为很多人希望用户记住难以记住的密码,所以他们求助于键盘模式来驯服这种疯狂。为了更好的衡量标准,加入不同的版本。

      哦,Twitter's forbidden password list 也没有。

      【讨论】:

        【解决方案6】:

        我还要补充: 不包括用户名字符串,如果用户名很长,甚至不包括用户名的一部分。

        【讨论】:

          猜你喜欢
          • 2010-10-31
          • 1970-01-01
          • 1970-01-01
          • 2013-07-04
          • 2011-09-03
          • 2012-05-31
          相关资源
          最近更新 更多