Zkontrolujte sílu hesla pomocí JavaScriptu a regulárních výrazů

Zkontrolujte sílu hesla pomocí JavaScriptu a regulárních výrazů

Dělal jsem nějaký výzkum, abych našel dobrý příklad kontroly síly hesla, která používá JavaScript a Pravidelné výrazy (Regex). V aplikaci v mé práci provedeme příspěvek zpět, abychom ověřili sílu hesla a je to pro naše uživatele docela nepohodlné.

Co je Regex?

Regulární výraz je posloupnost znaků, které definují vyhledávací vzor. Obvykle jsou takové vzory používány algoritmy pro vyhledávání řetězců nalézt or najít a nahradit operace s řetězci nebo pro ověření vstupu. 

Tento článek vás rozhodně nenaučí regulární výrazy. Jen vězte, že schopnost používat regulární výrazy zcela zjednoduší váš vývoj při hledání vzorů v textu. Je také důležité si uvědomit, že většina vývojových jazyků optimalizovala použití regulárních výrazů ... takže místo podrobné analýzy a prohledávání řetězců je Regex obvykle mnohem rychlejší na straně serveru i klienta.

Než jsem našel, docela jsem prohledal web příklad některých skvělých regulárních výrazů, které hledají kombinaci délky, znaků a symbolů. Kód byl však na můj vkus trochu přehnaný a přizpůsobený pro .NET. Takže jsem zjednodušil kód a vložil jej do JavaScriptu. To umožňuje ověřit sílu hesla v reálném čase v prohlížeči klienta před jeho odesláním zpět… a poskytuje uživateli zpětnou vazbu o síle hesla.

Napiš heslo

Při každém tahu klávesnice je heslo testováno proti regulárnímu výrazu a poté je uživateli poskytnuta zpětná vazba v rozsahu pod ním.




Napište heslo

Tady je Kodex

Společnost Pravidelné výrazy udělejte skvělou práci a minimalizujte délku kódu:

  • Více postav - Pokud je délka menší než 8 znaků.
  • Slabý - Pokud je délka menší než 10 znaků a neobsahuje kombinaci symbolů, velkých písmen, textu.
  • Střední - Pokud je délka 10 znaků nebo více a obsahuje kombinaci symbolů, velkých písmen, textu.
  • Silný - Pokud je délka 14 znaků nebo více a obsahuje kombinaci symbolů, velkých písmen, textu.

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

Kalení požadavku na heslo

Je nezbytné, abyste ve svém JavaScriptu nejen ověřili konstrukci hesla. To by umožnilo komukoli s nástroji pro vývoj prohlížeče obejít skript a použít jakékoli heslo, které by chtěl. Před uložením do své platformy byste měli VŽDY využít kontrolu na straně serveru k ověření síly hesla.

34 Komentáře

  1. 1
  2. 2

    DĚKUJU! DĚKUJU! DĚKUJU! Blbnul jsem 2 týdny s zatraceným kódem síly hesla z jiných webů a tahal jsem si vlasy. Vaše je krátká, funguje přesně tak, jak chci, a co je nejlepší, je snadné ji upravit pro začínajícího javascripta! Chtěl jsem zachytit verdikt síly a nenechat formulář odeslat, aby skutečně aktualizoval heslo uživatele, pokud nesplnil test síly. Kód jiných lidí byl příliš komplikovaný nebo nefungoval správně nebo něco jiného. Miluji tě! XXXXX

  3. 4

    děkuji bohu za lidi, kteří skutečně dokáží správně napsat část kódu.
    Měl stejné zkušenosti jako Janis.

    Funguje to hned po vybalení, což je ideální pro lidi jako já, kteří nemohou kódovat javascript!

  4. 5
  5. 6

    Ahoj, nejprve děkuji mnohokrát za vaše úsilí, snažil jsem se to použít s Asp.net, ale nefungoval, používám

    místo značky a nefungovalo to, nějaké návrhy ?!

  6. 7

    Na Nisreen: kód ve zvýrazněném poli nefunguje s cut'n'paste. Jednoduchá nabídka je pokazena. Kód ukázkového odkazu je v pořádku.

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

    „P @ s $ w0rD“ se ukazuje jako silný, i když by byl docela rychle prolomen slovníkovým útokem ...
    Chcete-li nasadit takovou funkci na profesionální řešení, domnívám se, že je důležité kombinovat tento algoritmus s kontrolou slovníku.

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

    může někdo říct, proč to nefungovalo moje ..

    zkopíroval jsem celý kód a vložil ho do poznámkového bloku ++, ale vůbec nefunguje?
    prosím pomozte mi..

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

    Tento typ „kontroly síly“ vede lidi po velmi nebezpečné cestě. Hodnotí rozmanitost znaků nad délkou hesla, což vede k tomu, že kratší a rozmanitější hesla hodnotí jako silnější než delší a méně různorodá hesla. To je klam, který dostane vaše uživatele do potíží, pokud někdy čelí vážné hackerské hrozbě.

    • 25

      Nesouhlasím, Jordane! Příklad byl jednoduše uveden jako příklad skriptu. Mým doporučením pro lidi je použít nástroj pro správu hesel k vytvoření nezávislých přístupových frází pro jakýkoli web, který je pro něj jedinečný. Dík!

  24. 26
  25. 27
  26. 28
  27. 29
  28. 31
  29. 33

    Jste živý spořič! Analyzoval jsem řetězce vlevo, vpravo a uprostřed a myslel jsem si, že existuje lepší způsob, a našel jsem svůj kus kódu pomocí Regexu. Byl schopen s tím zacházet na mém webu ... Netušíte, jak moc to pomohlo. Díky moc Douglasi !!

Co si myslíte?

Tyto stránky používají Akismet k omezení spamu. Zjistěte, jak jsou vaše údaje komentářů zpracovávány.