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.
Ho trovato un altro controllore di sicurezza della password. Il loro algoritmo basato sul dizionario di parole. Provane uno su microsoft.com – http://www.microsoft.com/protect/yourself/password/checker.mspx e uno su itsimpl.com – http://www.itsimpl.com
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
Prego! Prego! Prego!
Anch'io ti amo!
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!
Grazie per aver scritto un pezzo di codice che fa esattamente quello che dice sulla lattina!
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?!
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.
Ehi, mi piace il tuo copione! L'ho tradotto in olandese e l'ho pubblicato sul mio forum qui!
ottimo lavoro! esattamente come dovrebbe essere fatto sul client
molto bel lavoro….
Grazie Douglas, lo uso per il mio attuale lavoro.
"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.
Funziona alla grande in XULRunner con un po' di modifiche. Grazie!
Grazie per questo piccolo codice, ora posso usarlo per testare la sicurezza della mia password quando i miei visitatori inseriscono le loro password,
Ottimo pezzo di codifica
La sceneggiatura era super. L'avevo usata nel nostro progetto attuale
Grazie per la condivisione!
Espressione così semplice e fantastica. Come tester, ho derivato i miei TC da questa espressione.
Grazie per aver condiviso. Hai alcuni link non funzionanti in questa pagina. Per tua informazione.
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..
Fantastico!!!!! Grazie.
Ottimo lavoro ragazzo! Semplice ed efficace. Grazie mille per la condivisione!
grazie
Bene grazie. Ma... Qual è un esempio di STRONG pw? 'non riesco a trovarne uno!-{}
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.
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!
grazie funziona benissimo.
Grazie funziona bene
Apprezzo davvero che tu sia stato cercato così tante volte, ma alla fine ho ricevuto il tuo post e sono davvero stupito. GRAZIE
Grazie compagno. Appena distribuito sul mio sito Web e funziona molto bene.
Adoro sentirlo! Sei piu 'che benvenuto!
Apprezzo la tua condivisione! Ho cercato di rafforzare la sicurezza della password sul nostro sito Web e questo ha funzionato come volevo. Grazie mille!
Grazie, spero che tu riesca a personalizzarlo secondo necessità.
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!!
buono a sapersi!