Quelles devraient être les caractères valides dans les noms d'utilisateur?
De nombreux basé sur le web d'authentification de l'utilisateur systèmes ne permettent pas les noms d'utilisateur qui contient des caractères autres que des lettres, des chiffres et des caractères de soulignement.
Pourrait-il y avoir une raison technique pour que?
Vous devez vous connecter pour publier un commentaire.
Un système bien conçu n'a pas nécessairement besoin de prévenir tous les caractères spéciaux dans les noms d'utilisateur.
Cela dit, la raison des traits de soulignement ont traditionnellement été acceptés, c'est que le trait de soulignement est généralement considérée comme un "mot" de caractère, avec des lettres et des chiffres. Il est généralement le seul autre personnage compte tenu de cette distinction. Cela est vrai dans les expressions régulières, et même à un niveau de base dans la plupart des systèmes d'exploitation (type de trait de soulignement dans un mot et double-cliquez sur les lettres. La sélection va s'étendre au-delà du trait de soulignement. Maintenant, essayez la même chose avec un tableau de bord, il est probable qu'il ne sera pas.)
Oui: pour éviter d'avoir à échapper les caractères spéciaux. Paresseux programmeurs vont tout simplement abandonner les types de l'utilisateur, directement dans le code quelque part et c'est ce qui conduit à des attaques par injection.
Même si elle n'est pas utilisée à des fins malveillantes, permettant à l'utilisateur de taper des caractères qui seront en conflit quelque part d'autre peut-être plus de tracas que nécessaire. Par exemple, si vous décidez de créer un système de fichiers répertoire par utilisateur, pour stocker leurs téléchargements en cours, puis le nom d'utilisateur doit être conforme au répertoire règles de nommage sur cet OS (par exemple, pas
\/:*?"<>|
sur Windows).Une fois que vous avez évité les affrontements comme la dénomination du répertoire de l'un, et dépouillé
"';%
et//
pour éviter les attaques par injection, vous avez supprimé la plupart des signes de ponctuation, et "pourquoi quelqu'un a même besoin de signes de ponctuation dans leur nom d'utilisateur"?Il était beaucoup plus facile d'écrire un petit regex pour valider les noms d'utilisateur contre
[a-zA-Z0-9_]
et être fait avec elle, que faff sur de comprendre tous les signes de ponctuation qui seront pas en conflit, ou de les faire correspondre à d'autres personnages, d'une certaine façon.Puis, comme beaucoup de choses en informatique, dès que suffisamment de gens commencent à avoir seulement des lettres, des chiffres et des caractères de soulignement pour les noms d'utilisateur, et les gens commencent à faire des identifiants pour que spec, il est devenu le standard de facto et de l'auto-perpétue!
Lorsqu'il n'est pas précisé-je utiliser ce:
Cela nécessite une longueur de 4 avec un maximum de 32 caractères. Elle doit commencer par un caractère de mot et peut avoir non continue des points et des tirets. La seule raison que j'utilise car il est assez strictes pour s'intégrer avec n'importe quoi 🙂
Valide :
Invalide :
De la limiter à ces personnages (ou même de l'ASCII sous-ensemble d'entre eux) empêche les noms d'utilisateur comme d'être accepté. En n'acceptant pas ces caractères, vous pouvez éviter une large gamme de ou noms d'utilisateurs-qui-regarde-comme les autres-les noms d'utilisateur.
Car il permet à plusieurs mots pour être représenté en quelque sorte dans une manière lisible.
Peronally j'ai vraiment, vraiment souhaitent gens serait d'élargir un peu les choses pour permettre des tirets et les apostrophes. Cela permettrait à des personnes de l'utilisation non-anglais phonétique des noms (par exemple: Native American tribal des noms comme Elle-Ki et Ke'Xthsa-Tse)
Je n'aime pas la lisibilité de l'argument quand elle interfère avec la capacité des gens à utiliser leur langue maternelle dans les noms d'utilisateur.
Je vous recommande d'expérimenter l'utilisation de classes de caractères qui intègrent http://msdn.microsoft.com/en-us/library/20bw873z.aspx#SupportedUnicodeGeneralCategories ou http://msdn.microsoft.com/en-us/library/20bw873z.aspx#SupportedNamedBlocks. Je n'ai pas essayé, mais
valent peut-être une expérience.
La raison principale des sites web de faire respecter ces règles est la lisibilité (parce que les noms d'utilisateur comme
~-|this<>one|-~
sont ennuyeux). Il peut être aussi parce que c'est moins de travail (soulignements sont accompagnés par un\w+
regex, tandis que les tirets et autres caractères spéciaux ne le font pas), mais je doute que c'est l'une des principales raisons.Il n'y a pas de "norme", de sorte que, si aucune des raisons ci-dessus vous dérange, faire ce que vous voulez. Personnellement, j'aimerais voir plus de sites accepter les tirets et les périodes, mais c'est vraiment une préférence personnelle de la lisibilité et de la cohérence vs expression.
Dépend de la façon dont vos identifiants sont utilisés. Il n'y a pas de règle générale, sans connaître le contexte.
Caractère de soulignement était traditionnellement admis dans les identificateurs dans la plupart des langages de programmation, et a généralement été le seul caractère spécial autorisé.
Mais beaucoup de de connexion web toujours de ne pas accepter n'IMPORTE quel caractère spécial et sont limitées à la baisse/majuscules chiffres et caractères...
Et d'autres sont vraiment bien avec les particuliers 😉
Les gens veulent écrire leur nom d'utilisateur like_this plutôt que likethis ou LikeThis.