36 votes

Vérificateur de mot de passe jQuery

Je suis assez novice en matière de jQuery, et j'ai écrit une fonction simple pour vérifier la force d'un mot de passe à chaque pression de touche.

L'idée est que chaque fois qu'un utilisateur saisit un caractère, le contenu est évalué pour tester la force du mot de passe qu'il a saisi... Je suis sûr que tout le monde a déjà vu ça.

Quoi qu'il en soit, la logique que j'ai utilisée est qu'aucun mot de passe ne commence avec une valeur de 1. Lorsqu'un caractère minuscule est utilisé, le score passe à 2. Lorsqu'un chiffre est utilisé, le score augmente à nouveau de 1, de même lorsqu'un caractère majuscule est utilisé et lorsque le mot de passe compte 5 caractères ou plus.

Ce qui est renvoyé est la force du mot de passe jusqu'à présent sous la forme d'une valeur de 1 à 5 chaque fois qu'une touche est pressée.

Donc, sur ma question. La façon dont je l'ai fait ne semble pas très jQuery comme ... presque comme je pourrais aussi bien avoir fait directement javascript. Je me demandais aussi quelle était ma logique. Ai-je fait quelque chose ou oublié quelque chose ? Des suggestions de personnes plus intelligentes que moi ?

Toute suggestion ou conseil serait apprécié.

$(document).ready(function(){

        $("#pass_strength").keyup(function() {

            var strength = 1;

            /*length 5 characters or more*/
            if(this.value.length >= 5) {
                strength++;
            }

            /*contains lowercase characters*/
            if(this.value.match(/[a-z]+/)) {
                strength++;
            }

            /*contains digits*/
            if(this.value.match(/[0-9]+/)) {
                strength++;
            }

            /*contains uppercase characters*/
            if(this.value.match(/[A-Z]+/)) {
                strength++;
            }

            alert(strength);
        });
     });

0 votes

RnZ Code Labs a une interface facile à utiliser Force du mot de passe plugin.

1 votes

Pour un évaluateur de force de mot de passe plus sophistiqué, voir : stackoverflow.com/questions/948172/password-strength-meter/

35voto

amitkaz Points 2063

Le meilleur moyen est de prendre un plugin existant comme le suggère TJB.

Pour ce qui est de votre question sur le code lui-même, une manière plus agréable est de l'écrire comme ça :

var pass = "f00Bar!";

var strength = 1;
var arr = [/.{5,}/, /[a-z]+/, /[0-9]+/, /[A-Z]+/];
jQuery.map(arr, function(regexp) {
  if(pass.match(regexp))
     strength++;
});

(Modifié pour corriger les erreurs de syntaxe).

0 votes

Pouvez-vous expliquer ce que cela fait : /{5\,}/

1 votes

Il devrait être /.{5,}/ . La virgule signifie "pas de limite supérieure". Sans la virgule, le système essaierait de trouver exactement 5 caractères.

7voto

TJB Points 7536

Je suggère d'évaluer un plugin jQuery existant pour le renforcement des mots de passe. (à moins que vous ne le fassiez juste comme un exercice).

Voici quelques liens que j'ai trouvés :

http://www.visual-blast.com/javascript/password-strength-checker/

http://phiras.wordpress.com/2007/04/08/password-strength-meter-a-jquery-plugin/

2voto

rjohnston Points 2450

En plus de la réponse de gs, vous devriez vérifier le mot de passe par rapport aux mots du dictionnaire courant (en utilisant un hash, probablement). Sinon, un mot de passe faible comme 'Yellow1' sera évalué comme fort par votre logique.

1voto

Georg Schölly Points 63123
  • La longueur du mot de passe doit être d'au moins 8 caractères.
  • La force augmente avec la longueur, un mot de passe plus long devrait avoir plus de points.
  • Incluez les caractères spéciaux comme #/" et autres. (Ou tout autre caractère que [a-Z0-9]).
  • Pour les mots de passe très longs, cette méthode peut être lente. Pourquoi ne pas simplement tester chaque nouveau caractère et utiliser un dictionnaire pour savoir quelles caractéristiques le mot de passe possède déjà.

1voto

Sauron Points 5197

Vous pouvez essayer les plugins jQuery pour vérifier la force du mot de passe.

Certains d'entre eux sont

Mesure de la force des mots de passe

Indicateur de force du mot de passe

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X