2010-01-15 5 views
7

Я пробовал разные типы счетчиков прочности или проверки пароля, но все дают разные результаты, когда я тестирую один и тот же пароль, потому что каждый реализует свой собственный алгоритм.Рекомендации для измерителя прочности пароля (проверка пароля) Дизайн

Есть ли какой-то официальный стандарт или руководство, которое может следовать за мной, чтобы построить свой собственный измеритель прочности пароля.

Если не было официального стандарта, какие функции должен проверять хороший измеритель прочности пароля?

+2

Я думаю, что стандартизация алгоритма подорвет его силу, так как у злоумышленников будет хорошо и узко определенный набор правил для использования при попытке взлома паролей. Было бы намного легче взломать ваш пароль, если бы я знал, что у него есть 2-3 числа, 5-6 букв и 1 небольшого набора знаков препинания, чем если бы я был в темноте относительно ваших конкретных критериев. Я не знаю ответа. – Jay

ответ

3

Рассмотрим следующий пример:

  • Длина
  • Смешанный случай
  • Не много повторяющихся символов
  • Включает буквы, цифры и символы
  • не включает в себя часть имя пользователя
  • не похож на предыдущие пароли
  • Не хэш-то же самое, как слабый пароль
  • Не клавиатура ходьбы
  • не связана с индивидуальной
  • Не заканчивается с общими суффиксами
  • не начинается с общих префиксов

знакомства Брюс Шнайер post on passwords, а также this post.

+0

отличная статья Schneier. очень полезно. Благодарю. – RRUZ

1

Насколько я знаю, нет стандарта, так как существует множество определений того, какой должен быть хороший (то есть сильный) пароль.

Некоторые вещи, чтобы рассмотреть следующие вопросы:

  • Длина - чем дольше, тем лучше
  • Смешанный случай
  • Включает номера, а также символы
  • Включает не буквенно-цифровые символы
  • Не является словарное слово
  • Является фразой

и так далее

+0

"Не содержит буквенных символов"? Вы только что сказали в строке перед «Включает числа, а также символы», которые являются буквенно-цифровыми? –

+0

Это была опечатка. Исправлено. – ChrisF

0

Я бы также добавить: Не включает в себя строку имя, или даже часть имени пользователя, если это длинный один.

0

брошу еще один критерий в кольце:

  • Нет «клавиатуры не ходит»

Потому что так много людей, что пользователи ожидают запоминать пароли, которые трудно запомнить, они прибегают к клавиатуре чтобы укротить безумие. Бросьте в смещенные версии для хорошей оценки.

О, и ничего на Twitter's forbidden password list, либо.

0

Существует ряд рекомендаций (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/

0

Сила пароля должен быть проверен от имени нескольких параметров, как наличие специальных символов и цифр, длина пароля и т.д.

Пожалуйста, проверьте эту ссылку:

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

Блочный код JQuery:

$ (документ) .ready (функция() {

$("#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+'%'); 

}); 

});