Comprobe a intensidade do contrasinal con JavaScript e expresións regulares

Comprobe a intensidade do contrasinal con JavaScript e expresións regulares

Estiven a investigar sobre como atopar un bo exemplo dun comprobador de forza de contrasinal que use JavaScript Expresións regulares (Regex). Na aplicación do meu traballo, facemos unha publicación de volta para verificar a intensidade do contrasinal e é bastante incómodo para os nosos usuarios.

Que é Regex?

Unha expresión regular é unha secuencia de caracteres que definen un patrón de busca. Normalmente, estes patróns úsanse por algoritmos de busca de cadeas para atopar or atopar e substituír operacións en cadeas ou para validación de entrada. 

Este artigo definitivamente non é para ensinarche expresións regulares. Só ten que saber que a posibilidade de usar expresións regulares simplificará absolutamente o seu desenvolvemento mentres busca patróns no texto. Tamén é importante ter en conta que a maioría das linguaxes de desenvolvemento optimizaron o uso de expresións regulares ... así que en vez de analizar e buscar cadeas paso a paso, Regex adoita ser moito máis rápido tanto no servidor como no cliente.

Busquei bastante na web antes de atopalo un exemplo dalgunhas estupendas expresións regulares que buscan unha combinación de lonxitude, caracteres e símbolos. Non obstante, o código era un pouco excesivo para o meu gusto e adaptado a .NET. Entón, simplifiquei o código e coloqueino en JavaScript. Isto fai que valide a intensidade do contrasinal en tempo real no navegador do cliente antes de publicalo de novo ... e proporciona algúns comentarios ao usuario sobre a fortaleza do contrasinal.

Escribe un contrasinal

Con cada golpe de teclado, o contrasinal compróbase contra a expresión regular e, a continuación, proporciónaselle comentarios ao usuario nun espazo debaixo dela.




Escribe contrasinal

Aquí está o Código

o Expresións regulares faga un traballo fantástico minimizando a lonxitude do código:

  • Máis personaxes - Se a lonxitude é inferior a 8 caracteres.
  • Feble - Se a lonxitude ten menos de 10 caracteres e non contén unha combinación de símbolos, maiúsculas, texto.
  • medio - Se a lonxitude ten 10 caracteres ou máis e ten unha combinación de símbolos, maiúsculas e texto.
  • Forte - Se a lonxitude ten 14 caracteres ou máis e ten unha combinación de símbolos, maiúsculas e texto.

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

Endurecendo a súa solicitude de contrasinal

É esencial que non valide só a construción do contrasinal no seu Javascript. Isto permitiría a calquera persoa con ferramentas de desenvolvemento do navegador ignorar o script e empregar o contrasinal que lle gustaría. SEMPRE debería empregar unha verificación do servidor para validar a intensidade do contrasinal antes de gardalo na súa plataforma.

34 Comentarios

  1. 1
  2. 2

    GRAZAS! GRAZAS! GRAZAS! Levo enganando durante dúas semanas co maldito código de contrasinal doutros sitios web e sacándome o pelo. O teu é curto, funciona como quero e, o mellor de todo, é fácil de modificar para un novato en javascript. Quería capturar o veredicto de forza e non deixar publicar o formulario para actualizar realmente o contrasinal do usuario a menos que cumprise a proba de forza. O código doutras persoas era demasiado complicado ou non funcionaba ben ou outra cousa. Quérote! XXXXX

  3. 4

    grazas a Deus pola xente que realmente pode escribir un anaco de código correctamente.
    Tivo a mesma experiencia que Janis.

    Isto funciona perfectamente para persoas coma min que non poden codificar JavaScript.

  4. 5
  5. 6

    Ola, en primeiro lugar moitas grazas polos teus esforzos, intentei usar isto con Asp.net pero non funcionou, estou a usar

    en vez de etiqueta, e non funcionou, algunha suxestión ?!

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

    "P @ s $ w0rD" móstrase forte, aínda que se racharía bastante rápido cun ataque diccionario ...
    Para despregar tal característica nunha solución profesional, creo que é importante combinar este algoritmo cunha comprobación diccionaria.

  11. 12
  12. 13

    Grazas por este pequeno código agora podo usalo para probar a intensidade do meu contrasinal cando os meus visitantes introducen os seus contrasinais,

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

    alguén pode dicir, por que non funcionou o meu ..

    Copiei todo o código e pegouno no caderno de notas ++, pero non funciona?
    por favor axúdame ..

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

    Este tipo de "control de forza" leva á xente por un camiño moi perigoso. Valora a diversidade de caracteres sobre a lonxitude da frase de contrasinal, levándoo a valorar contrasinais máis curtos e diversos como máis fortes que os contrasinais máis longos e menos diversos. Esa é unha falacia que causará problemas aos teus usuarios se algunha vez se enfrontan a unha grave ameaza de piratería.

    • 25

      Non estou de acordo, Jordan! O exemplo púxose simplemente como exemplo do guión. A miña recomendación para a xente é empregar unha ferramenta de xestión de contrasinais para crear frases de acceso independentes para calquera sitio que lle sexa exclusivo. Grazas!

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

    Es un aforrador en vivo. Estaba analizando as cadeas esquerda e dereita e pensei que había un xeito mellor de atopar o teu anaco de código usando Regex. Puiden xogar con ela no meu sitio ... Non tes nin idea de canto axudou isto. Moitas grazas Douglas !!

¿Que pensas?

Este sitio usa Akismet para reducir o spam. Aprende a procesar os teus datos de comentarios.