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 usare 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 invece di 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

Il progetto 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.
  • Medium - 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 bypassare 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 un dannato codice di sicurezza della password da altri siti Web e mi sono strappato i capelli. Il tuo è breve, funziona proprio come voglio io e, soprattutto, facile da modificare per un principiante di javascript! Volevo acquisire il verdetto di forza e non lasciare che il modulo post aggiorni effettivamente la password dell'utente a meno che non soddisfi il test di resistenza. Il codice di altre persone era troppo complicato o non funzionava correttamente o qualcos'altro. Ti amo! XXXXX

  3. 4

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

    Funziona immediatamente, il che è perfetto per le persone come me che non sanno codificare javascript!

  4. 5
  5. 6

    Ciao, prima di tutto grazie mille per i tuoi sforzi, ho provato a 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 cut'n'paste. La citazione singola è incasinata. Il codice del link dimostrativo va comunque bene.

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

    "P @ s $ w0rD" mostra a forte, anche se verrebbe risolto abbastanza rapidamente con un attacco del dizionario ...
    Per implementare una 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 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" porta le persone su un sentiero molto pericoloso. Apprezza la diversità dei caratteri sulla lunghezza della passphrase, portandola a classificare password più brevi e diversificate come più forti di password più lunghe e meno diverse. Questo è un errore che metterà nei guai i tuoi utenti se dovessero affrontare una seria minaccia di hacking.

    • 25

      Non sono in disaccordo, Jordan! L'esempio è stato semplicemente presentato come esempio della sceneggiatura. Il mio consiglio per le persone è di utilizzare uno strumento di gestione delle password per creare passphrase indipendenti per qualsiasi sito che sia unico. Grazie!

  24. 26
  25. 27
  26. 28

    Apprezzo davvero che tu sia stato cercato molte volte, ma alla fine ho ricevuto il tuo post e sono davvero stupito. GRAZIE

  27. 29
  28. 31
  29. 33

    Sei un risparmiatore dal vivo! Stavo analizzando le stringhe da 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 riuscito a provarlo 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.