Quels personnages aimeriez-vous faire invalide pour un mot de passe?
Une situation hypothétique: vous avez mis en place un mot de passe système de manutention, et il n'est pas question d'imposer des limitations à tous les personnages qui peuvent être utilisés. Vous voulez mettre en place certaines règles qui sont un compromis raisonnable entre deux choses -
- Permettre à l'utilisateur autant de liberté que possible.
- Accepter la possibilité que vous pouvez changer la façon dont vous gérer les mots de passe dans le futur, vous ne souhaitez pas à la règle raisonnables implémentations en raison de vos utilisateurs, mots de passe existants deviendrait invalide.
Ce que les règles que vous imposez? Existe-il d'autres facteurs qui pourraient influer sur votre choix?
Vous devez vous connecter pour publier un commentaire.
Le mieux est d'aucune restriction d'aucune sorte, à moins que vous pouvez réellement justifier.
Si vous êtes une banque, fournisseur de messagerie, ou si l'utilisateur peut commander quelque chose sans fournir une carte de crédit, puis de forcer les utilisateurs à utiliser un mot de passe fort de sens. Sinon, vous êtes juste en le rendant dur pour aucune raison.
Sur ce que vous devez stocker, je dirais 1024 caractères d'unicode avec des caractères de contrôle interdit, c'est de tout ce qui est justifié. Si l'utilisateur ne peut pas le taper, ils devraient avoir choisi un mot de passe différent. Tout ce que vous êtes stockage est une table de hachage, de sorte que vous pouvez toujours couper à la taille que vous voulez.
iôhQná"«-óÓSGÉH©®EqjË=«ÒquW6>\Jò-§
.De n'imposer aucune restriction que ce soit, jamais. Et il me semble que vous avez l'intention de stocker le mot de passe, pas de hachage. Ne pas le faire. Plutôt, magasin sel et hachés combinaison de mot de passe et dit sel.
Toutefois, vous pouvez demander à vos utilisateurs d'avoir une assez forte de mot de passe en imposant une restriction sur la longueur (par exemple, pas moins de 6 caractères) et sur les caractères qui composent le mot de passe (par exemple, il devrait contenir inférieur en majuscules et en caractères alphabétiques, un ou deux chiffres et de plusieurs caractères non-alphabétiques comme ^ ou #).
Non-caractère de contrôle doit être fine. Je pense que les développeurs de super-duper mot de passe systèmes dans l'avenir permettrait de "inhabituel" caractères ASCII comme des signes de ponctuation et d'autres marques, mais les caractères de contrôle ont l'habitude d'être lourd pour entrer en mode texte coquilles et même GUI boîtes de dialogue qui s'attendent Tab et Entrée/Retour pour être libre, pour leurs propres fins.
Un espace vide (basé sur la logique, il peut être coupé accidentellement avant d'être haché)
Pas de limite sur le mot de passe. Si ils peuvent le type de leur clavier, indépendamment de ce que régional clavier qu'ils utilisent. Vous pouvez imposer un minimum de longueur, des options comme au moins un chiffre et un caractère spécial, mais pas de limite maximum.
Concernant votre deuxième question. La façon dont je voudrais mettre en œuvre c'est par le biais de prise de séparer les champs comme vous améliorer la force du mot de passe. Par exemple, vous avez deux champs qui concernent le mot de passe: sel, password_md5. Permet de dire plus tard que vous souhaitez utiliser sha256. Créer un nouveau champ appelé password_sha256. Lorsque l'utilisateur se connecte vous vérifiez d'abord password_sha256. Si ce champ est vide alors vérifier password_md5. Si cela correspond à maintenant, vous avez le texte en clair le mot de passe saisi par l'utilisateur. Vous pouvez ensuite générer le sha256 mot de passe (que j'avais également réinitialiser le sel pour faire bonne mesure) et d'enregistrer la nouvelle valeur. Je ne puis vide la valeur dans password_md5 afin que personne ne pourrait renverser la situation pour obtenir le mot de passe.
Personnellement, j'avais juste aller avec le meilleur de hachage votre langue et l'utiliser. Les choses importantes sont l'application d'un bon minimum de stratégie de mot de passe--il n'a pas d'importance comment sécuriser le hachage est lorsque le mot de passe "1234"--et de graines le hachage avec certains caractères aléatoire pour éviter les attaques par dictionnaire.
Personnellement, j'ai toujours été soucieuse de ne pas appliquer trop de règles.
Cela a tout changé. Je viens de trouver mon site web est vulnérable à des attaques XSS. La solution est de nettoyer toutes les pièces de l'entrée qui vient de l'utilisateur, y compris le mot de passe.
De 10 ans, nous avons eu pas de limites sur le mot de passe.
Maintenant, nous mettons en œuvre une limite de caractères qui peuvent être utilisés, et c'est tout simplement de bloquer les pirates de pouvoir accéder à Javascript ou SQL. Donc, nous avons construit la liste suivante:
Caractères valides pour un mot de passe sont: a-z A-Z 0-9 . - _ $ * ( ) # @ ! % /(vide)
Cela permet beaucoup de souplesse, mais évite les caractères qui pourraient être utilisés dans le codage d'un XSS hack, comme ; < > \ { } [ ] + = ? & , : '" `
HTH
J'avais garder tout ce que vous pouvez faire avec une clé (et éventuellement shift) de votre clavier, à l'exception de l'onglet. Ce genre de régimes nécessiterait une plus restrictive option?
Avoir aux utilisateurs de taper des mots de passe qui contiennent au moins un chiffre et un caractère non-alphanumérique, et de plus de six caractères. De toute façon, je pense que quelles que soient les contraintes, dans le cas où vous décidez de valider les mots de passe, vous devez en informer les utilisateurs dans un délai raisonnable pour mettre à jour leur.
Dans notre organisation, si l'utilisateur est de fournir le mot de passe que nous leur permettons de se servir de quelque chose qu'ils veulent.
Lorsque les utilisateurs sont d'abord inscrits dans le système de mot de passe est généré. Puisque ce mot de passe est généralement par la poste, nous évitons l'utilisation de certains caractères qui pourraient être confondues en particulier lors de l'utilisation de certaines polices de caractères. Par exemple, la lettre O et le chiffre 0 (zéro) ne sont pas utilisés. De même pour L, I et 1 (un), S et 5, Z et 2 et les autres.
Avant de faire ce changement, nous avons eu beaucoup d'appels à notre service d'assistance parce que les personnages nous confondre et qu'ils ne pouvaient pas se connecter.
Personnellement, j'utilise DigitalPersona Empreintes du Clavier (oui, Microsoft ne [ou n'] faire un dispositif similaire, à la fois intégrés ou séparés à partir du clavier).
Cela permet la génération d'un très long et compliqué mots de passe qui n'ont pas à être écrit (comme la pression de votre doigt sur le lecteur fournit le mot de passe de la boîte de dialogue de Connexion [system/application/site web]).
C'est, à mon avis, offre le meilleur des deux mondes: Extrêmement difficile à "deviner" les mots de passe, sans avoir à vous en souvenir. Il fait aussi simple que la sécurité supplémentaire, la recommandation de l'utilisation de différents mots de passe sur différents systèmes.
Bien, c'est mon deux-cents de la valeur.
Quelques règles à suivre:
Les règles, je suggérerais de l'application: