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 programistycznych 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 .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 zapewnia użytkownikowi informację zwrotną 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
W ramach projektu 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.
Znalazłem inne narzędzie do sprawdzania siły hasła. Ich algorytm oparty na słowniku słów. Wypróbuj na microsoft.com - http://www.microsoft.com/protect/yourself/password/checker.mspx i jeden na itsimpl.com - http://www.itsimpl.com
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
Nie ma za co! Nie ma za co! Nie ma za co!
Też cię kocham!
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!
Dziękujemy za napisanie fragmentu kodu, który robi dokładnie to, co jest napisane na puszce!
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 ?!
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.
Hej, podoba mi się twój scenariusz! Przetłumaczyłem go na holenderski i zamieściłem na moim forum tutaj!
dobra robota! dokładnie tak, jak należy to zrobić na kliencie
bardzo dobra robota….
Dzięki Douglas, używam go do mojej obecnej pracy.
„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.
Działa świetnie w XULRunner z niewielkimi zmianami. Dzięki!
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,
Świetny kawałek kodowania
Skrypt był super. Użyłem w naszym obecnym projekcie
Dziękuję za podzielenie się!
Tak proste i fantastyczne wyrażenie. Jako tester wyprowadziłem moje TC z tego wyrażenia.
Dziękuję za udostępnienie. Na tej stronie masz kilka uszkodzonych linków. FYI.
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 ..
Fantastyczny!!!!! Dziękuję Ci.
Świetna robota! Proste i skuteczne. Dziękuję bardzo za udostępnienie!
dziękuję
Dobra dzięki. Ale… Jaki jest przykład MOCNEGO pw? 'nie mogę znaleźć! - {}
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.
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!
dzięki, działa świetnie.
Dziękuję, że działa dobrze
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
Dzięki stary. Właśnie został wdrożony na mojej stronie i działa bardzo dobrze.
Uwielbiam to słyszeć! Serdecznie zapraszamy!
Dziękuję za udostępnienie! Chciałem wzmocnić siłę hasła na naszej stronie internetowej, a ta działała tak, jak chciałem. Dziękuję bardzo!
Dziękuję, mam nadzieję, że możesz go dostosować w razie potrzeby.
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 !!
Wspaniale usłyszeć!