Verifica la robustezza della password con JavaScript e le espressioni regolari

Verifica la robustezza della password con JavaScript e le espressioni regolari

Stavo facendo delle ricerche per trovare un buon esempio di un verificatore di sicurezza della password che utilizza JavaScript e Espressioni regolari (Regex). Nell'applicazione al mio lavoro, facciamo un post per verificare la sicurezza della password ed è abbastanza scomodo per i nostri utenti.

Cos'è Regex?

Un'espressione regolare è una sequenza di caratteri che definiscono un modello di ricerca. Di solito, tali modelli vengono utilizzati dagli algoritmi di ricerca delle stringhe Find or trova e sostituisci operazioni su stringhe o per la convalida dell'input. 

Questo articolo non è sicuramente per insegnarti le espressioni regolari. Sappi solo che la capacità di utilizzare le espressioni regolari semplificherà assolutamente il tuo sviluppo mentre cerchi modelli nel testo. È anche importante notare che la maggior parte dei linguaggi di sviluppo ha ottimizzato l'uso delle espressioni regolari ... quindi, piuttosto che analizzare e cercare le stringhe passo dopo passo, Regex è in genere molto più veloce sia lato server che lato client.

Ho cercato sul web un bel po 'prima di trovare un esempio di alcune fantastiche espressioni regolari che cercano una combinazione di lunghezza, caratteri e simboli. Tuttavia, il codice era un po 'eccessivo per i miei gusti e adattato per .NET. Quindi ho semplificato il codice e l'ho inserito in JavaScript. Ciò consente di convalidare la forza della password in tempo reale sul browser del client prima di pubblicarla di nuovo ... e fornisce un feedback all'utente sulla sicurezza della password.

Digita una password

Ad ogni colpo della tastiera, la password viene testata rispetto all'espressione regolare e quindi viene fornito un feedback all'utente in un intervallo sotto di essa.




Inserisci password

Ecco il codice

Espressioni regolari fare un ottimo lavoro riducendo al minimo la lunghezza del codice:

  • Più personaggi - Se la lunghezza è inferiore a 8 caratteri.
  • Debole - Se la lunghezza è inferiore a 10 caratteri e non contiene una combinazione di simboli, maiuscole, testo.
  • Medio - Se la lunghezza è di 10 caratteri o più e ha una combinazione di simboli, maiuscole, testo.
  • Forte - Se la lunghezza è di 14 caratteri o più e ha una combinazione di simboli, maiuscole, testo.

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

Rafforzare la tua richiesta di password

È essenziale non solo convalidare la costruzione della password all'interno del tuo Javascript. Ciò consentirebbe a chiunque disponga di strumenti di sviluppo del browser di aggirare lo script e utilizzare qualsiasi password desideri. Dovresti SEMPRE utilizzare un controllo lato server per convalidare la forza della password prima di memorizzarla nella tua piattaforma.

Commenti

  1. 1
  2. 2

    GRAZIE! GRAZIE! GRAZIE! Ho scherzato per 2 settimane con il maledetto codice di sicurezza della password da altri siti Web e mi sono strappato i capelli. Il tuo è breve, funziona proprio come voglio e soprattutto, facile da modificare per un principiante di javascript! Volevo acquisire il verdetto di forza e non lasciare che il modulo pubblicasse per aggiornare effettivamente la password dell'utente a meno che non avesse soddisfatto il test di forza. Il codice di altre persone era troppo complicato o non funzionava correttamente o qualcos'altro. Ti voglio bene! XXXXX

  3. 4

    grazie a dio per le persone che possono effettivamente scrivere correttamente un pezzo di codice.
    Ha avuto la stessa esperienza di Janis.

    Funziona subito, perfetto per persone come me che non sanno programmare javascript!

  4. 5
  5. 6

    Ciao, prima di tutto grazie mille per i tuoi sforzi, ho provato ad usarlo con Asp.net ma non ha funzionato, sto usando

    invece di tag,e non ha funzionato,qualche suggerimento?!

  6. 7

    A Nisreen: il codice nella casella evidenziata non funziona con un taglia e incolla. La citazione singola è incasinata. Il codice del collegamento dimostrativo va comunque bene.

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

    "P@s$w0rD" si mostra forte, anche se verrebbe risolto abbastanza rapidamente con un attacco al dizionario...
    Per implementare tale funzionalità su una soluzione professionale, credo sia importante combinare questo algoritmo con un controllo del dizionario.

  11. 12
  12. 13

    Grazie per questo piccolo codice, ora posso usarlo per testare la sicurezza della mia password quando i miei visitatori inseriscono le loro password,

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

    qualcuno può dire, perché non ha funzionato il mio..

    ho copiato tutto il codice e lo ho incollato su notepad ++, ma non funziona affatto?
    mi aiuti per favore..

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

    Questo tipo di "controllo della forza" conduce le persone su un sentiero molto pericoloso. Valuta la diversità dei caratteri rispetto alla lunghezza della passphrase, portandola a classificare password più brevi e più diverse come più forti di password più lunghe e meno diversificate. Questo è un errore che metterà nei guai i tuoi utenti se mai dovessero affrontare una seria minaccia di hacking.

    • 25

      Non sono d'accordo, Giordano! L'esempio è stato semplicemente presentato come esempio dello script. La mia raccomandazione per le persone è di utilizzare uno strumento di gestione delle password per creare passphrase indipendenti per qualsiasi sito che sia unico per esso. Grazie!

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

    Sei un salvatore dal vivo! Stavo analizzando le stringhe a sinistra a destra e al centro e ho pensato che ci fosse un modo migliore e ho trovato il tuo pezzo di codice usando Regex. Sono stato in grado di armeggiare con esso per il mio sito ... Non hai idea di quanto questo abbia aiutato. Grazie mille Douglas!!

Cosa ne pensi?

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati dei tuoi commenti.