Sprawdź siłę hasła za pomocą JavaScript i wyrażeń regularnych

Sprawdź siłę hasła za pomocą JavaScript i wyrażeń regularnych

Poszukiwałem dobrego przykładu sprawdzania siły hasła, który używa JavaScript i Wyrażenia regularne (Regex). W aplikacji w mojej pracy robimy post zwrotny, aby zweryfikować siłę hasła i jest to dość niewygodne dla naszych użytkowników.

Co to jest Regex?

Wyrażenie regularne to sekwencja znaków definiujących wzorzec wyszukiwania. Zazwyczaj takie wzorce są używane przez algorytmy wyszukiwania ciągów znaków odnaleźć or Znajdź i zamień operacje na łańcuchach lub do sprawdzania poprawności danych wejściowych. 

Ten artykuł zdecydowanie nie ma na celu nauczenia Cię wyrażeń regularnych. Po prostu wiedz, że możliwość korzystania z wyrażeń regularnych absolutnie uprości programowanie podczas wyszukiwania wzorców w tekście. Należy również zauważyć, że większość języków programowania ma zoptymalizowane użycie wyrażeń regularnych… więc zamiast analizować i wyszukiwać ciągi krok po kroku, Regex jest zwykle znacznie szybszy zarówno po stronie serwera, jak i klienta.

Przeszukałem internet trochę, zanim znalazłem przykład kilku świetnych wyrażeń regularnych, które szukają kombinacji długości, znaków i symboli. Jednak kod był trochę przesadny jak na mój gust i dostosowany do platformy .NET. Więc uprościłem kod i umieściłem go w JavaScript. To sprawia, że ​​sprawdza siłę hasła w czasie rzeczywistym w przeglądarce klienta przed wysłaniem go z powrotem… i dostarcza użytkownikowi informacji zwrotnej na temat siły hasła.

Wpisz hasło

Przy każdym naciśnięciu klawisza hasło jest sprawdzane pod kątem wyrażenia regularnego, a następnie użytkownik otrzymuje informację zwrotną w zakresie poniżej.




Wpisz hasło

Oto kod

Pandemia Wyrażenia regularne wykonuj fantastyczną robotę minimalizując długość kodu:

  • Więcej postaci - Jeśli długość jest mniejsza niż 8 znaków.
  • Słaby - Jeśli długość jest mniejsza niż 10 znaków i nie zawiera kombinacji symboli, wielkich liter ani tekstu.
  • Średni - Jeśli długość wynosi 10 lub więcej znaków i zawiera kombinację symboli, wielkich liter i tekstu.
  • Silny - Jeśli długość wynosi 14 lub więcej znaków i zawiera kombinację symboli, wielkich liter, tekstu.

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

Wzmocnienie żądania hasła

Ważne jest, aby nie sprawdzać poprawności konstrukcji hasła w swoim JavaScript. Umożliwiłoby to każdemu, kto ma narzędzia programistyczne przeglądarki, ominięcie skryptu i użycie dowolnego hasła. ZAWSZE powinieneś korzystać z kontroli po stronie serwera, aby zweryfikować siłę hasła przed zapisaniem go na swojej platformie.

Komentarze 34

  1. 1
  2. 2

    DZIĘKUJĘ CI! DZIĘKUJĘ CI! DZIĘKUJĘ CI! Od 2 tygodni wygłupiam się z kodem siły hasła z innych stron internetowych i wyrywam sobie włosy. Twój jest krótki, działa tak, jak chcę, a co najważniejsze, łatwy do zmodyfikowania dla nowicjusza javascript! Chciałem uchwycić werdykt siły i nie pozwolić, aby formularz faktycznie zaktualizował hasło użytkownika, chyba że przeszedł test siły. Kod innych osób był zbyt skomplikowany lub nie działał poprawnie lub coś innego. Kocham Cię! XXXXX

  3. 4

    dzięki Bogu za ludzi, którzy rzeczywiście potrafią poprawnie napisać fragment kodu.
    Miał takie samo doświadczenie jak Janis.

    Działa to od razu po wyjęciu z pudełka, co jest idealne dla ludzi takich jak ja, którzy nie mogą kodować javascript!

  4. 5
  5. 6

    Cześć, przede wszystkim bardzo dziękuję za twoje wysiłki, próbowałem użyć tego z Asp.net, ale nie zadziałało, używam

    zamiast tagu i nie zadziałało, jakieś sugestie ?!

  6. 7

    Do Nisreen: kod w podświetlonym polu nie działa z wycinaniem i wklejaniem. Pojedynczy cudzysłów jest pomieszany. Kod linku demonstracyjnego jest jednak w porządku.

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

    „P @ s $ w0rD” pokazuje się jako silny, chociaż zostałby dość szybko złamany za pomocą ataku słownikowego…
    Uważam, że aby wdrożyć taką funkcję w profesjonalnym rozwiązaniu, należy połączyć ten algorytm z kontrolą słownika.

  11. 12
  12. 13

    Dzięki za ten mały kod, mogę go teraz używać do testowania siły hasła, gdy moi goście wprowadzają swoje hasła,

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

    Czy ktoś może powiedzieć, dlaczego moje nie zadziałało ..

    skopiowałem cały kod i wkleiłem go do notatnika ++, ale w ogóle nie działa?
    proszę mi pomóc ..

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

    Ten rodzaj „sprawdzania siły” prowadzi ludzi na bardzo niebezpieczną ścieżkę. Ceni różnorodność znaków ponad długość hasła, co prowadzi do oceny krótszych, bardziej zróżnicowanych haseł jako silniejszych niż dłuższe i mniej zróżnicowane. To błąd, który sprawi, że Twoi użytkownicy będą mieli kłopoty, jeśli kiedykolwiek staną przed poważnym zagrożeniem hakerskim.

    • 25

      Nie zgadzam się, Jordan! Przykład został po prostu przedstawiony jako przykład skryptu. Polecam ludziom korzystanie z narzędzia do zarządzania hasłami do tworzenia niezależnych haseł dla każdej witryny, która jest dla niej unikalna. Dzięki!

  24. 26
  25. 27
  26. 28

    Jestem naprawdę wdzięczny, że zostałeś przeszukany tyle razy, ale w końcu dostałem twój post i jestem naprawdę zaskoczony. DZIĘKUJĘ CI

  27. 29
  28. 31
  29. 33

    Jesteś ratownikiem na żywo! Analizowałem ciągi po lewej i po prawej stronie i pomyślałem, że jest lepszy sposób i znalazłem twój fragment kodu za pomocą Regex. Byłem w stanie poradzić sobie z tym na mojej stronie… Nie masz pojęcia, jak bardzo to pomogło. Wielkie dzięki Douglas !!

Co o tym myślisz?

Ta strona używa Akismet do redukcji spamu. Dowiedz się, jak przetwarzane są dane komentarza.