Verificați puterea parolei cu JavaScript și expresii regulate

Verificați puterea parolei cu JavaScript și expresii regulate

Făceam câteva cercetări despre găsirea unui bun exemplu de verificare a puterii parolei care se folosește JavaScript Expresii obisnuite (Regex). În aplicația de la locul de muncă, facem o postare înapoi pentru a verifica puterea parolei și este destul de incomodă pentru utilizatorii noștri.

Ce este Regex?

O expresie regulată este o secvență de caractere care definesc un model de căutare. De obicei, astfel de modele sunt utilizate de algoritmi de căutare a șirurilor pentru găsi or găsiți și înlocuiți operații pe șiruri sau pentru validarea intrărilor. 

Acest articol nu este cu siguranță pentru a vă învăța expresii regulate. Știți doar că abilitatea de a utiliza expresii regulate vă va simplifica în mod absolut dezvoltarea pe măsură ce căutați modele în text. De asemenea, este important să rețineți că majoritatea limbajelor de dezvoltare au optimizat utilizarea expresiei regulate ... deci, mai degrabă decât analizarea și căutarea șirurilor pas cu pas, Regex este de obicei mult mai rapid atât pe partea serverului, cât și pe partea clientului.

Am căutat pe web destul de puțin înainte să găsesc un exemplu a unor expresii regulate minunate care caută o combinație de lungime, caractere și simboluri. Cu toate acestea, codul a fost un pic excesiv pentru gustul meu și adaptat pentru .NET. Așa că am simplificat codul și l-am pus în JavaScript. Acest lucru îl face să valideze puterea parolei în timp real pe browserul clientului înainte de a o posta înapoi ... și oferă un feedback utilizatorului cu privire la puterea parolei.

Tastați o parolă

Cu fiecare lovitură a tastaturii, parola este testată în funcție de expresia regulată și apoi feedback-ul este furnizat utilizatorului într-un interval de sub ea.




Scrie parola

Iată Codul

Platforma Expresii obisnuite face o treabă fantastică de a minimiza lungimea codului:

  • Mai multe personaje - Dacă lungimea este sub 8 caractere.
  • Slab - Dacă lungimea este mai mică de 10 caractere și nu conține o combinație de simboluri, majuscule, text.
  • Mediu - Dacă lungimea este de 10 caractere sau mai mult și are o combinație de simboluri, majuscule, text.
  • Puternic - Dacă lungimea este de 14 caractere sau mai mult și are o combinație de simboluri, majuscule, text.

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

Întărirea cererii de parolă

Este esențial să nu validați doar construcția parolei în Javascript. Acest lucru ar permite oricui are instrumente de dezvoltare a browserului să ocolească scriptul și să folosească orice parolă ar dori. Ar trebui să utilizați ÎNTOTDEAUNA o verificare pe partea de server pentru a valida puterea parolei înainte de a o stoca în platforma dvs.

4 Comentarii

  1. 1
  2. 2

    MULȚUMESC! MULȚUMESC! MULȚUMESC! Am păcălit de 2 săptămâni cu codul naibii de putere al parolei de pe alte site-uri web și mi-am tras părul. Al tău este scurt, funcționează exact așa cum îmi doresc și, cel mai bine, este ușor de modificat pentru un novice javascript! Am vrut să surprind verdictul de forță și să nu las formularul să se posteze pentru a actualiza parola utilizatorului, cu excepția cazului în care a îndeplinit testul de rezistență. Codul altora a fost prea complicat sau nu a funcționat corect sau altceva. Te iubesc! XXXXX

  3. 4

    mulțumesc lui Dumnezeu pentru oamenii care pot scrie de fapt o bucată de cod în mod corespunzător.
    Am avut aceeași experiență ca Janis.

    Acest lucru funcționează chiar din cutie, ceea ce este perfect pentru persoanele ca mine care nu pot codifica codul javascript!

  4. 5
  5. 6

    Bună, în primul rând mulțumesc mult pentru eforturile tale, am încercat să folosesc acest lucru cu Asp.net, dar nu am funcționat, îl folosesc

    în loc de etichetă și nu a funcționat, vreo sugestie ?!

  6. 7

    Pentru Nisreen: codul din caseta evidențiată nu funcționează cu o cut'n'paste. Citatul unic este încurcat. Totuși, codul legăturii demonstrative este în regulă.

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

    „P @ s $ w0rD” se arată puternic, deși ar fi spart destul de repede cu un atac dicționar ...
    Pentru a implementa o astfel de caracteristică pe o soluție profesională, cred că este important să combinați acest algoritm cu o verificare dicționară.

  11. 12
  12. 13

    Mulțumesc pentru acest mic cod pe care îl pot folosi acum pentru a-mi testa puterea parolei atunci când vizitatorii mei introduc parolele lor,

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

    poate cineva să spună, de ce nu a funcționat al meu ..

    Am copiat tot codul și l-am lipit în Notepad ++, dar nu funcționează deloc?
    vă rog să mă ajutați..

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

    Acest tip de „verificator de forță” duce oamenii pe o cale foarte periculoasă. Prețuiește diversitatea caracterelor peste lungimea expresiei de trecere, determinând-o să evalueze parolele mai scurte și mai diverse ca fiind mai puternice decât parolele mai lungi și mai diverse. Aceasta este o eroare care îi va pune pe utilizatori în probleme dacă se confruntă vreodată cu o amenințare gravă de piratare.

    • 25

      Nu sunt de acord, Jordan! Exemplul a fost pur și simplu pus ca exemplu al scenariului. Recomandarea mea pentru oameni este de a utiliza un instrument de gestionare a parolelor pentru a crea expresii de acces independente pentru orice site care este unic pentru acesta. Mulțumiri!

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

    Vă mulțumesc că ați distribuit Am căutat să îmbunătățim puterea parolei pe site-ul nostru web și acesta a funcționat așa cum mi-am dorit. Mulțumesc mult!

Ce părere ai?

Acest site folosește Akismet pentru a reduce spamul. Aflați cum sunt procesate datele despre comentarii.