Provjerite snagu lozinke pomoću JavaScript-a i regularnih izraza

Provjerite snagu lozinke pomoću JavaScript-a i regularnih izraza

Radio sam neko istraživanje kako bih pronašao dobar primjer provjere jačine lozinke koja koristi JavaScript i Regularni izrazi (Regex). U aplikaciji na mom poslu vraćamo post kako bismo provjerili snagu lozinke i prilično je nezgodno za naše korisnike.

Što je Regex?

Regularni izraz je niz znakova koji definiraju obrazac pretraživanja. Obično se takvi uzorci koriste algoritmima pretraživanja nizova za naći or pronaći i zamijeniti operacije na nizovima ili za provjeru ulaznosti. 

Ovaj članak definitivno ne želi naučiti vas regularnim izrazima. Samo znajte da će vam mogućnost upotrebe regularnih izraza apsolutno pojednostaviti razvoj dok tražite uzorke u tekstu. Također je važno napomenuti da je većina razvojnih jezika optimizirala upotrebu regularnih izraza ... pa, umjesto raščlanjivanja i pretraživanja nizova korak po korak, Regex je obično mnogo brži i na poslužitelju i na strani klijenta.

Prilično sam pretraživao web prije nego što sam pronašao Primjer nekih sjajnih Regularnih izraza koji traže kombinaciju duljine, znakova i simbola. Ipak, kod je za moj ukus bio malo pretjeran i prilagođen za .NET. Zato sam pojednostavio kod i stavio ga u JavaScript. To omogućuje provjeru snage lozinke u stvarnom vremenu u klijentovom pregledniku prije nego što je pošalje natrag ... i pruža neke povratne informacije korisniku o snazi ​​lozinke.

Upišite lozinku

Svakim potezom tipkovnice zaporka se testira u odnosu na regularni izraz, a zatim se korisniku pruža povratna informacija u rasponu ispod nje.




Upišite lozinku

Evo Kodeksa

Odlomak Regularni izrazi napravite fantastičan posao minimalizirajući duljinu koda:

  • Više likova - Ako je duljina manja od 8 znakova.
  • Slab - Ako je duljina manja od 10 znakova i ne sadrži kombinaciju simbola, velikih slova i teksta.
  • Srednji - Ako je duljina 10 znakova ili više i ima kombinaciju simbola, velikih slova i teksta.
  • jak - Ako je duljina 14 znakova ili više i ima kombinaciju simbola, velikih slova i teksta.

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

Utvrđivanje zahtjeva za lozinkom

Bitno je da u svom Javascriptu ne potvrdite samo konstrukciju lozinke. To bi omogućilo svima koji imaju alate za razvoj preglednika da zaobiđu skriptu i koriste lozinku koju god žele. Uvijek biste trebali koristiti provjeru na strani poslužitelja za provjeru snage lozinke prije nego što je pohranite na svoju platformu.

34 Komentari

  1. 1
  2. 2

    HVALA VAM! HVALA VAM! HVALA VAM! Dva tjedna se zezam s vražjim kodom snage lozinke s drugih web stranica i čupam kosu. Vaš je kratak, radi baš onako kako ja želim, a što je najbolje, jednostavan za javascript početnike koji ga mogu izmijeniti! Htio sam zabilježiti presudu o snazi ​​i ne dopustiti da obrazac stvarno ažurira korisničku lozinku ako ne zadovolji test snage. Kod drugih ljudi bio je prekompliciran ili nije radio kako treba ili nešto treće. Volim te! XXXXX

  3. 4

    hvala bogu za ljude koji zapravo mogu pravilno napisati dio koda.
    Imala isto iskustvo kao Janis.

    Ovo djeluje odmah iz kutije, što je savršeno za ljude poput mene koji ne mogu kodirati javascript!

  4. 5
  5. 6

    Bok, prije svega puno hvala na vašim naporima, pokušao sam ovo koristiti s Asp.net, ali nije uspjelo, koristim

    umjesto oznake, a nije uspjelo, bilo kakvih prijedloga ?!

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

    “P @ s $ w0rD” pokazuje se snažno, iako bi prilično brzo bio puknut rječničkim napadom ...
    Da bih primijenio takvu značajku na profesionalnom rješenju, vjerujem da je važno kombinirati ovaj algoritam s provjerom rječnika.

  11. 12
  12. 13

    Hvala na ovom malom kodu, sada ga mogu koristiti za testiranje snage moje lozinke kada moji posjetitelji .unese svoje lozinke,

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

    može li netko reći, zašto to nije uspjelo moje ..

    kopirao sam sav kôd i zalijepio ga u notepad ++, ali uopće ne radi?
    molim te pomozi mi..

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

    Ova vrsta "provjere snage" vodi ljude vrlo opasnim putem. Vrednova raznolikost znakova tijekom duljine zaporke, što dovodi do toga da kraće, raznovrsnije lozinke ocjenjuje kao jače od dužih, manje raznolikih lozinki. To je zabluda koja će dovesti vaše korisnike u probleme ako se ikad suoče s ozbiljnom prijetnjom hakiranja.

    • 25

      Ne slažem se, Jordan! Primjer je jednostavno izložen kao primjer skripte. Moja preporuka ljudima je da koriste alat za upravljanje lozinkom za stvaranje neovisnih pristupnih fraza za bilo koje web mjesto koje je njemu svojstveno. Hvala!

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

    Vi ste živi štediša! Raščlanjivao sam žice lijevo desno i po sredini i mislio da postoji bolji način i pronašao sam vaš dio koda pomoću Regexa. Mogao sam se poigrati s tim za moju web stranicu ... Nemate pojma koliko je ovo pomoglo. Puno hvala Douglas !!

Što vi mislite?

Ova web stranica koristi Akismet za smanjenje neželjene pošte. Saznajte kako se podaci vašeg komentara obrađuju.