Skontrolujte silu hesla pomocou JavaScriptu a regulárnych výrazov

Skontrolujte silu hesla pomocou JavaScriptu a regulárnych výrazov

Robil som prieskum zameraný na nájdenie dobrého príkladu kontroly sily hesla, ktorá používa JavaScript a Pravidelné výrazy (Regex). V aplikácii v mojej práci urobíme príspevok späť, aby sme overili silu hesla a je to pre našich používateľov dosť nepohodlné.

Čo je Regex?

Regulárny výraz je postupnosť znakov, ktoré definujú vzor vyhľadávania. Takéto vzory sa zvyčajne používajú v algoritmoch vyhľadávania reťazcov nájsť or nájsť a nahradiť operácie s reťazcami alebo na overenie vstupu. 

Tento článok vás rozhodne nemá učiť regulárne výrazy. Vedzte, že schopnosť používať regulárne výrazy úplne zjednoduší váš vývoj pri hľadaní vzorov v texte. Je tiež dôležité poznamenať, že väčšina vývojových jazykov optimalizovala použitie regulárneho výrazu ... takže namiesto postupnej analýzy a vyhľadávania reťazcov je Regex zvyčajne oveľa rýchlejší na strane servera aj klienta.

Než som našiel, dosť som prehľadal web príklad niekoľkých skvelých regulárnych výrazov, ktoré hľadajú kombináciu dĺžky, znakov a symbolov. Avšak, kód bol na môj vkus trochu prehnaný a prispôsobený pre .NET. Takže som zjednodušil kód a vložil ho do JavaScriptu. Toto umožňuje overiť silu hesla v reálnom čase v prehliadači klienta pred jeho opätovným zverejnením ... a poskytuje používateľovi spätnú väzbu o sile hesla.

Zadajte heslo

Pri každom stlačení klávesnice sa heslo testuje proti regulárnemu výrazu a potom sa používateľovi poskytuje spätná väzba v rozsahu pod ním.




Zadajte heslo

Tu je kódex

و Pravidelné výrazy urobte fantastickú prácu s minimalizáciou dĺžky kódu:

  • Viac znakov - Ak je dĺžka menej ako 8 znakov.
  • Slabý - Ak je dĺžka menšia ako 10 znakov a neobsahuje kombináciu symbolov, veľkých písmen a textu.
  • stredná - Ak je dĺžka 10 znakov alebo viac a obsahuje kombináciu symbolov, veľkých písmen a textu.
  • Silný - Ak je dĺžka 14 znakov alebo viac a obsahuje kombináciu symbolov, veľkých písmen a 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>

Vystuženie vašej požiadavky na heslo

Je nevyhnutné, aby ste nielen potvrdili vytvorenie hesla vo svojom Javascripti. Toto by umožnilo každému, kto má vývojové nástroje prehliadača, obísť skript a použiť akékoľvek heslo, ktoré by chcel. Pred uložením na svoju platformu by ste mali vždy použiť kontrolu na strane servera na overenie sily hesla.

34 Komentáre

  1. 1
  2. 2

    ĎAKUJEM! ĎAKUJEM! ĎAKUJEM! Blbol som 2 týždne s prekliatým kódom sily hesla z iných webov a vytrhával si vlasy. Vaša je krátka, funguje presne tak, ako chcem, a čo je najlepšie, nováčik v jazyku Javascript ju ľahko upraví! Chcel som zachytiť verdikt sily a nenechať formulár zverejniť, aby skutočne aktualizoval heslo používateľa, pokiaľ nesplnil test pevnosti. Kód iných ľudí bol príliš komplikovaný alebo nefungoval správne alebo niečo iné. Ľúbim ťa! XXXXX

  3. 4

    ďakujem Bohu za ľudí, ktorí skutočne vedia správne napísať kúsok kódu.
    Mal rovnaké skúsenosti ako Janis.

    Funguje to ihneď po vybalení, čo je ideálne riešenie pre ľudí ako ja, ktorí nemôžu kódovať kód JavaScript.

  4. 5
  5. 6

    Ahoj, v prvom rade ďakujem mnohokrát za vaše úsilie, snažil som sa to použiť s Asp.net, ale nefungoval som, používam to

    namiesto značky a nefungovalo to, nejaké návrhy ?!

  6. 7

    Na Nisreen: kód vo zvýraznenom poli nefunguje s cut'n'paste. Jednotná ponuka je chybná. Kód predvádzacieho odkazu je však v poriadku.

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

    „P @ s $ w0rD“ sa ukazuje ako silný, aj keď by bol pomerne rýchlo prelomený slovníkovým útokom ...
    Aby som nasadil takúto funkciu na profesionálne riešenie, som presvedčený, že je dôležité spojiť tento algoritmus s kontrolou slovníka.

  11. 12
  12. 13

    Vďaka za tento malý kód, ktorý teraz môžem použiť na otestovanie sily môjho hesla, keď moji návštevníci zadajú svoje heslá,

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

    môže niekto povedať, prečo to nefungovalo moje ..

    skopíroval som celý kód a vložil som ho do poznámkového bloku ++, ale nefunguje to vôbec?
    prosím pomôžte mi..

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

    Tento typ „kontroly sily“ vedie ľudí po veľmi nebezpečnej ceste. Hodnotí rozmanitosť znakov nad dĺžkou prístupovej frázy, čo vedie k hodnoteniu kratších a rozmanitejších hesiel ako silnejších ako dlhších a menej rozmanitých hesiel. Toto je klam, ktorý vašich používateľov dostane do problémov, ak niekedy čelia vážnej hackerskej hrozbe.

    • 25

      Nesúhlasím, Jordan! Tento príklad bol jednoducho uvedený ako príklad scenára. Moje odporúčanie pre ľudí je využiť nástroj na správu hesiel na vytvorenie nezávislých prístupových fráz pre akékoľvek stránky, ktoré sú pre ne jedinečné. Vďaka!

  24. 26
  25. 27
  26. 28

    naozaj si vážim, že ste toto hľadali mnohokrát, ale nakoniec som dostal váš príspevok a som skutočne ohromený. ĎAKUJEM

  27. 29
  28. 31
  29. 33

    Ste živým šetričom! Analyzoval som reťazce vľavo vpravo a na stred a myslel som si, že existuje lepší spôsob. Našiel som váš kúsok kódu pomocou nástroja Regex. Dokázal s tým zafungovať na mojej stránke ... Netušíte, ako veľmi to pomohlo. Ďakujem moc Douglas !!

Čo si myslíte?

Táto stránka používa Akismet na zníženie spamu. Zistite, ako sa spracúvajú údaje vašich komentárov.