Проверьте надежность пароля с помощью JavaScript и регулярных выражений

Проверьте надежность пароля с помощью JavaScript и регулярных выражений

Я проводил небольшое исследование, чтобы найти хороший пример средства проверки надежности пароля, которое использует JavaScript и Обычные выражения (Регулярное выражение). В приложении, в котором я работаю, мы делаем пост назад, чтобы проверить надежность пароля, и это довольно неудобно для наших пользователей.

Что такое регулярное выражение?

Регулярное выражение - это последовательность символов, определяющая шаблон поиска. Обычно такие шаблоны используются алгоритмами поиска строк для найдите or найти и заменить операции со строками или для проверки ввода. 

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

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

Введите пароль

При каждом нажатии клавиатуры пароль проверяется на соответствие регулярному выражению, а затем пользователю предоставляется обратная связь в промежутке под ним.




Введите пароль

Вот код

Освободи Себя Обычные выражения сделать фантастическую работу по минимизации длины кода:

  • Больше персонажей - Если длина меньше 8 символов.
  • Слабый - Если длина меньше 10 символов и не содержит комбинации символов, заглавных букв, текста.
  • средний - Если длина составляет 10 и более знаков и имеет комбинацию символов, заглавных букв, текста.
  • сильныйЕсли длина составляет 14 символов и более и имеет комбинацию символов, заглавных букв, текста.

<script language="javascript">
    function passwordChanged() {
        var strength = document.getElementById('strength');
        var strongRegex = new RegExp("^(?=.{14,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
        var mediumRegex = new RegExp("^(?=.{10,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
        var enoughRegex = new RegExp("(?=.{8,}).*", "g");
        var pwd = document.getElementById("password");
        if (pwd.value.length == 0) {
            strength.innerHTML = 'Type Password';
        } else if (false == enoughRegex.test(pwd.value)) {
            strength.innerHTML = 'More Characters';
        } else if (strongRegex.test(pwd.value)) {
            strength.innerHTML = '<span style="color:green">Strong!</span>';
        } else if (mediumRegex.test(pwd.value)) {
            strength.innerHTML = '<span style="color:orange">Medium!</span>';
        } else {
            strength.innerHTML = '<span style="color:red">Weak!</span>';
        }
    }
</script>
<input name="password" id="password" type="text" size="15" maxlength="100" onkeyup="return passwordChanged();" />
<span id="strength">Type Password</span>

Повышение надежности запроса пароля

Важно, чтобы вы не просто проверяли конструкцию пароля в своем Javascript. Это позволит любому, у кого есть инструменты разработки браузера, обойти скрипт и использовать любой пароль, который ему нужен. Вы должны ВСЕГДА использовать проверку на стороне сервера, чтобы проверить надежность пароля, прежде чем сохранять его на своей платформе.

34 комментариев

  1. 1
  2. 2

    СПАСИБО! СПАСИБО! СПАСИБО! Я уже 2 недели дурачился с чертовым кодом надежности пароля с других сайтов и рвал на себе волосы. Ваш короткий, работает так же, как я хочу, и, что самое главное, новичку в javascript легко изменить! Я хотел зафиксировать вердикт надежности и не позволять публикации формы фактически обновлять пароль пользователя, если он не соответствует тесту на надежность. Код других людей был слишком сложным или работал неправильно, или что-то еще. Я люблю тебя! XXXXX

  3. 4

    слава богу за людей, которые действительно могут правильно написать кусок кода.
    Был такой же опыт, как Янис.

    Это работает прямо из коробки, что идеально подходит для людей вроде меня, которые не умеют кодировать javascript!

  4. 5
  5. 6

    Привет, прежде всего большое спасибо за ваши усилия, я пытался использовать это с Asp.net, но не работал, я использую

    вместо тега, и это не сработало, никаких предложений ?!

  6. 7

    Обращение к Nisreen: код в выделенном поле не работает с cut'n'paste. Одиночная кавычка испорчена. Тем не менее, код демонстрационной ссылки в порядке.

  7. 8
  8. 9
  9. 10
  10. 11

    «P @ s $ w0rD» показывает сильный, хотя он будет довольно быстро взломан с помощью словарной атаки ...
    Я считаю, что для развертывания такой функции в профессиональном решении важно совместить этот алгоритм с проверкой словаря.

  11. 12
  12. 13

    Спасибо за этот небольшой код, теперь я могу использовать его для проверки надежности моего пароля, когда мои посетители вводят свои пароли,

  13. 14
  14. 15
  15. 16
  16. 17
  17. 18

    Спасибо, что поделились. На этой странице есть несколько неработающих ссылок. К вашему сведению.

  18. 19

    может кто-нибудь подскажет, почему у меня не получилось ..

    я скопировал весь код и вставил его в блокнот ++, но он вообще не работает?
    Пожалуйста, помогите мне ..

  19. 20
  20. 21
  21. 22
  22. 23
  23. 24

    Этот тип «проверки силы» ведет людей по очень опасному пути. Он ценит разнообразие символов по длине парольной фразы, в результате чего более короткие и разнообразные пароли считаются более надежными, чем более длинные и менее разнообразные пароли. Это заблуждение, которое доставит вашим пользователям проблемы, если они когда-либо столкнутся с серьезной угрозой взлома.

    • 25

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

  24. 26
  25. 27
  26. 28

    Я очень признателен, что вас так много раз искали, но, наконец, я получил ваше сообщение и очень удивлен. СПАСИБО

  27. 29
  28. 31

    Я ценю, что вы поделились! Я давно искал повышения надежности пароля на нашем веб-сайте, и этот сработал так, как я хотел. Большое спасибо!

  29. 33

    Вы живы спасатель! Я разбирал строки слева направо и по центру и подумал, что есть лучший способ, и нашел ваш фрагмент кода с помощью Regex. Смог поработать с ним для моего сайта… Вы даже не представляете, насколько это помогло. Большое спасибо, Дуглас !!

Как вы думаете?

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются ваши данные комментариев.