web-dev-qa-db-fra.com

Est-ce une bonne ou une mauvaise pratique de permettre à un utilisateur de changer son nom d'utilisateur?

J'ai cherché partout en ligne ainsi que sur ce site pour essayer de trouver plus d'informations concernant la sécurité de ceci, mais je n'ai rien trouvé. Dans mon cas particulier, le produit est un site Web, mais je pense que cette question s'applique à tout logiciel qui héberge un grand nombre d'utilisateurs.

Je sais qu'il existe de nombreux sites Web qui vous permettent de changer votre nom d'utilisateur, mais en même temps, beaucoup ne le permettent pas. Je suis sûr que certains qui ne le permettent pas peuvent être simplement pour la simplicité, mais peut-être aussi pour la sécurité.

Ma question est exactement comme le titre le demande:

Du point de vue de la sécurité, diriez-vous que c'est une bonne ou une mauvaise pratique de permettre aux individus de changer leur nom d'utilisateur?

Je ne peux actuellement penser à aucune raison de ne pas l'autoriser, étant donné que cela est fait correctement (c'est-à-dire qu'il est impossible de dupliquer les noms d'utilisateur, d'exiger la saisie du mot de passe actuel pour s'assurer que les exigences de mot de passe sont toujours remplies concernant le non-nom d'utilisateur, etc.), mais je peux '' t aider mais pense qu'il y a quelque chose qui me manque.

Je sais qu'il y a des avantages du point de vue de l'utilisateur à lui permettre de changer son nom d'utilisateur. Par exemple, s'ils définissent leur nom d'utilisateur sur leur adresse e-mail et décident d'utiliser une autre adresse e-mail ultérieurement. Au lieu de cela, je suis curieux des avantages par rapport aux risques concernant la sécurité de l'application et du processus de connexion si vous leur permettez de changer leur nom d'utilisateur.

MODIFIER:

Certaines des réponses soulèvent de bons points concernant les noms affichés publiquement, mais pour clarifier, la question ne concerne pas un nom d'affichage public, mais plutôt le nom d'utilisateur unique utilisé pour se connecter.

114
Jeff Y

Beaucoup de gens ont examiné les raisons de ne pas autoriser les changements de nom à la fois du point de vue de la sécurité et de la communauté. Cependant, il existe de nombreuses raisons légitimes pour autoriser les changements de nom d'utilisateur, même si le nom d'utilisateur est distinct du nom d'affichage, par exemple:

  • Quelqu'un a changé son vrai nom ou le nom sous lequel il préfère être appelé, en raison de son mariage, de situations familiales, d'une fuite de harcèlement/harcèlement/etc., etc.

    Même s'il s'agit simplement d'un nom d'utilisateur, le fait d'avoir à utiliser un ancien nom qui porte un traumatisme peut aggraver le traumatisme. En outre, il est tout à fait possible pour un harceleur/harceleur de connaître les informations d'identification de connexion de sa cible, et le fait de pouvoir modifier les deux parties des informations d'identification réduit la surface d'attaque; en outre, la surveillance des tentatives de connexion à un nom d'utilisateur abandonné permet de constituer un dossier juridique contre un mauvais agent.

  • Les gens ont décidé d'avancer vers une transition de genre

    Être forcé d'utiliser son "nom mort", même dans le contexte d'un nom d'utilisateur privé, est également très traumatisant. (Je peux parler d'expérience personnelle sur celui-ci.)

  • Les gens ont un nom d'utilisateur qui ne leur semble plus approprié pour quelque raison que ce soit

    Cela a moins d'implication pour les noms d'utilisateur internes, mais il est toujours préférable de pécher par excès de gentillesse, à mon avis.

Ceux-ci sont tous importants pour le confort de l'utilisateur, et dans de nombreux cas, les gens créeraient probablement un nouveau compte avec le nouveau nom de toute façon, ils pourraient donc tout aussi bien le soutenir.

Éviter l'ingénierie sociale est certes important, mais il existe des approches qui aident à atténuer cela, telles que diverses formes de vérification (comme on le voit sur plusieurs réseaux sociaux), la cryptographie à clé publique et les indicateurs de profil ("le nom a changé pour la dernière fois il y a N mois; le nom a changé K fois "). Et, puisque cette question a été modifiée pour concerner les noms d'utilisateur internes et non les noms d'affichage publics, ces préoccupations ne sont même pas pertinentes pour la discussion.

En outre, gardez à l'esprit que de nombreuses surfaces d'attaque fournies par quelqu'un qui change son nom d'utilisateur sont également présentes pour quelqu'un qui crée simplement un nouveau compte, et si une option de changement de nom d'utilisateur n'est pas disponible, l'utilisateur créera probablement un nouveau compte - éventuellement en utilisant le même mot de passe comme l'ancien et autrement faire des choses qui pourraient conduire à une sécurité compromise.

C'est une bonne idée de maintenir une piste d'audit des changements de nom d'utilisateur et d'interdire la création de nouveaux comptes qui utilisent un nom d'utilisateur précédemment utilisé (au moins si le nom d'utilisateur a été utilisé pour la dernière fois dans le passé, disons, année), mais il n'y a aucune raison que le nom d'utilisateur doit jamais être la clé primaire utilisée pour associer des données au compte d'utilisateur en premier lieu, car il existe des raisons légitimes pour un changement de nom d'utilisateur et tous les enregistrements de compte doivent être normalisés en premier lieu à un ID abstrait uniquement interne.

113
fluffy

Je dirais tant qu'ils ne sont pas en mesure de changer leur identifiant unique. C'est à dire. ils peuvent changer le nom sous lequel ils apparaissent, mais ce nom est lié à un numéro d'ID utilisateur immuable (cela rendra également vos DBA plus heureux). Je m'assurerais également que l'utilisateur ne puisse pas changer son nom en un ancien nom d'un autre utilisateur (pour aider à atténuer le potentiel d'escroquerie dont Anders parle). Vous envisagez donc de stocker tous les noms d'un utilisateur à un moment donné.

Il pourrait être préférable d'avoir une demande de changement de nom d'utilisateur, de gérer les cas légitimes (comme le cas de l'e-mail), et de ne pas avoir de méthode automatisable par l'utilisateur pour le faire.

35
K.B.

Je suis un peu surpris que cela n'ait pas été évoqué. Mais je suppose que la raison pour laquelle de nombreux sites ne vous permettent pas de changer votre nom d'utilisateur est parce que cela pose un problème si les informations de compte d'un utilisateur sont volées car l'attaquant peut maintenant tout changer complètement sur le compte.

Il est sans doute plus complexe de tenter de récupérer un compte pour une personne dont les coordonnées ont été volées et tout a été entièrement changé. Le fait de disposer d'informations communes qui ne changeront jamais facilite la consultation d'un utilisateur vers son compte en cas de perte d'accès.

Je pense que certaines des autres réponses ici ont fourni de meilleures solutions, mais je ne suis pas sûr que beaucoup d'entre elles aient abordé ce que vous demandiez réellement concernant les implications en matière de sécurité de l'autorisation d'un changement de nom d'utilisateur.

8
Rawrskyes

Comme mentionné, permettre aux utilisateurs de changer facilement les noms d'utilisateur (appelons-le "nom d'affichage" pour lever l'ambiguïté) permet aux utilisateurs d'esquiver plus facilement les conséquences du harcèlement ou de l'arnaque d'autres utilisateurs. Si votre site a un aspect social, peut-être demandez-vous si les interdictions, les blocages, les rapports, les historiques de discussion, etc., subiront un changement de nom d'utilisateur (par exemple, un utilisateur sera-t-il au courant qu'il parle au même compte, même si le nom a changé? ).

Un autre point à considérer est l'anonymat ou les problèmes de confidentialité. Il est assez fréquent que quelqu'un crée un compte avec son vrai nom et regrette ensuite pour une raison quelconque d'y attacher sa véritable identité. Parfois, c'est parce qu'ils ont été victimes d'intimidation, mais c'est souvent pour des raisons légitimes, comme le partage excessif des détails personnels de leur vie, ou ils sont victimes d'intimidation. Cette question récente vient à l'esprit comme un exemple différent:

J'ai accidentellement entré le mot de passe d'un site Web comme nom d'utilisateur pour un autre site Web

Dans ce cas, soumettre un ticket de service à être examiné par un humain ou autoriser un nombre limité de changements de nom de compte semble être une approche raisonnable.

8
Mike Ounsworth

Nous utilisons actuellement votre suggestion concernant les personnes qui nous contactent pour demander un changement, mais elle n'est pas aussi évolutive en raison du travail manuel et nous oblige à demander des réponses à leurs questions de sécurité pour vérification.

C'est définitivement faux. Non seulement vous devez le faire manuellement, mais vous êtes obligé de donner des réponses de réponse de sécurité à tous ceux qui traitent de telles demandes.

Si vous voulez garder le contrôle, semi-automatisez-le: laissez l'utilisateur faire tout le travail préparatoire, c'est-à-dire, entrez le nouveau nom, écrivez sa raison (si vous le souhaitez) et répondez à la question de sécurité. Maintenant, les gars du service d'assistance n'ont plus qu'à accepter ou refuser la demande.


De nombreuses raisons pour et contre l'autorisation des changements de nom d'utilisateur ont été données dans les autres réponses. Notez simplement que vous pouvez suivre la voie du milieu: autorisez une seule modification automatisée, par exemple, une fois par an. C'est suffisamment généreux pour gérer 99% des demandes, mais suffisamment limité pour éviter la plupart des abus.

8
maaartinus

Je dirais qu'il vaut mieux ne pas autoriser les utilisateurs à modifier leurs noms d'utilisateur, mais cela dépend vraiment de votre modèle de menace. Voici les avantages et les inconvénients de le permettre:

Avantages:

  • Si les informations d'identification d'un utilisateur sont compromises sur un autre site, autoriser les utilisateurs à modifier leur nom d'utilisateur peut rendre plus difficile la mise en correspondance des informations d'identification du site compromis avec votre site, ce qui rend plus difficile l'exécution d'une attaque de bourrage d'informations d'identification. Notez que l'utilisateur qui change son mot de passe atteint le même objectif.

Les inconvénients:

  • Comme mentionné ci-dessus, il est plus facile pour les utilisateurs d'effectuer des attaques d'ingénierie sociale les uns contre les autres sur votre site.
  • Vous avez ajouté de la complexité à votre site, ce qui à son tour augmente le nombre de bogues de sécurité potentiels. Par exemple, si vous recherchez des doublons, vous avez maintenant une vulnérabilité d'énumération des utilisateurs.
6
Dan Landberg

Vous équilibrez essentiellement deux problèmes concurrents, avec un troisième facteur. Le premier est la sécurité des utilisateurs de votre site, changer un nom d'utilisateur est un moyen facile de tromper d'autres personnes afin de les arnaquer. La seconde est que changer un nom d'utilisateur est un moyen facile de tromper d'autres personnes afin de s'en éloigner.

Les personnes harcelées préfèrent changer leur nom d'utilisateur car c'est un sursis immédiat. Les gens qui harcèlent les autres voudraient le changer comme vous pouvez l'obtenir grâce aux défenses initiales. Et l'autre facteur est que plus de pièces mobiles signifient plus de choses à frapper signifie moins de sécurité.

Votre première ligne de conduite devrait être de décider de quelle manière vous vous appuyez ici. Vous concentrez-vous sur la prévention des escrocs ou essayez-vous de rendre l'environnement aussi sûr que possible? Garder à l'esprit que créer un environnement sûr peut signifier ne pas automatiser un changement, et il existe d'autres raisons de changer un nom d'utilisateur, à la fois bonne et mauvaise. C'est à vous de comprendre en fonction de ce que vous savez de votre site. La deuxième étape serait de vérifier si vous pouvez ou non effectuer une implantation sécurisée pour cela.

À ce stade, c'est un organigramme. Vous préférez l'automatiser, mais vous ne pouvez pas le faire en toute sécurité? Ne le fais pas. Vous avez un problème avec les escrocs et autres attaques d'ingénierie sociale? Ne le fais pas. Vous voulez faciliter le changement et pouvez le mettre en œuvre en toute sécurité? Fais le.

Je voudrais noter que, comme d'autres l'ont suggéré, garder une trace des noms d'utilisateur est une bonne idée même s'il est caché et disponible uniquement pour vous (idéalement caché si les modifications sont pour des raisons de sécurité) et augmenter la vérification de la disponibilité des noms d'utilisateur pour durer environ trois noms d'utilisateur à travers le le site serait utile (et autre chose à sécuriser).

Enfin, vous avez mentionné l'évolutivité. À mesure que vous évoluez, il devient plus facile (lire moins cher) d'automatiser des choses que vous ne pouvez pas faire pour des raisons de sécurité et de vous défendre contre les attaques d'une autre manière, voir Twitter pour un exemple. Si vous atteignez ce point, puis automatisez, le plus tôt sera le mieux.

4
Christopher

D'après mon expérience, autoriser un changement de nom d'utilisateur là où il n'était pas prévu à l'origine rend l'audit/journalisation un peu plus difficile, en particulier dans le cas inévitable où un développeur d'il y a des années a décidé d'ajouter le nom d'utilisateur mais pas la clé primaire à chaque entrée de journal.

Cela se produit, surtout lorsque vous embauchez des développeurs amateurs/externalisés - vos journaux deviendront des ordures que vous devrez reconstruire légalement en faisant des références croisées manuellement si vos entrées de journal ne mappent pas le nom d'utilisateur à la clé primaire d'origine à l'époque de l'activité.

Donc, avant d'activer cela, je vous recommande de regarder toutes les solutions de journalisation que vous pourriez avoir et de vous assurer qu'elles enregistrent le pk à côté de/au lieu du nom d'utilisateur afin que vous puissiez garder une trace de l'identité à travers les changements de nom d'utilisateur.

3
Ivan

À mon avis, c'est plus une question de stratégie ou d'architecture que de sécurité… Tant que vous vous assurez de garder un identifiant unique en interne pour chaque utilisateur (par exemple, un ID unique de base de données, qui ne changera jamais, mais cela ne change pas). t doivent être affichés n’importe où), et un historique des modifications par utilisateur, les utilisateurs devraient pouvoir modifier leurs identifiants ou noms d’utilisateur. Si vous souhaitez afficher l'historique des modifications sur la page de l'utilisateur dépend de l'objectif et de l'utilisation de votre logiciel.

Personnellement, je trouve toujours très ennuyeux les services qui imposent ce genre de restrictions arbitraires ("vous ne pouvez pas changer votre nom d'utilisateur", "vous ne pouvez pas changer votre identifiant", "vous ne pouvez pas réutiliser les mots de passe que vous avez déjà utilisés dans le passé", etc.) .

Cependant, nous pouvons faire la différence entre 3 cas (plus le cas général):

  1. logiciel hors ligne

  2. service intranet

  3. service Internet

  4. sommaire

1 - logiciel hors ligne

Dans le cas d'un logiciel totalement hors ligne, les utilisateurs doivent toujours pouvoir modifier leur identifiant. Tout est local ici donc il n'y a aucune raison d'interdire tout changement.

2 - service intranet

Dans le cas d'un service intranet, nous nous attendons très probablement à ce que les utilisateurs disposent d'un moyen simple de contacter directement un administrateur.

Le moyen le plus sûr de changer de connexion pourrait être une procédure manuelle. Il est également probablement possible d'assurer un moyen sûr d'automatiser la procédure.

Mais, à mon humble avis, les utilisateurs devraient pouvoir modifier leur connexion, et la connexion devrait être totalement indépendante de l'ID unique de l'utilisateur.

3 - service Internet

Dans le cas d'un service en ligne, je pense que la connexion doit toujours être l'adresse e-mail de l'utilisateur (ou, peut-être, dans certains cas, un numéro de téléphone mobile, cependant, dès qu'il s'agit d'un service Internet, Je m'attendrais à ce que mon utilisateur ait une adresse e-mail et je ne recommanderais pas l'utilisation d'un numéro de téléphone).

Dans ce cas, bien sûr, les utilisateurs devraient pouvoir modifier leur adresse e-mail quand ils le souhaitent et, par conséquent, leur identifiant (c'est-à-dire leur adresse e-mail).

Bien sûr, dans ce cas, vous devez vous assurer d'avoir une procédure appropriée, pour vous assurer que lorsque la demande de modification se produit, il existe un mécanisme qui permet de confirmer que le demandeur est le propriétaire du compte (e-mail de vérification avec lien de confirmation qui a un date d'expiration, disons 24h mais, cela dépend de votre cas).

4 - résumé

  • les utilisateurs doivent toujours pouvoir modifier leur identifiant
  • l'ID unique de l'utilisateur doit toujours être indépendant de la connexion
  • dans le cas d'un service Internet, évitez la "connexion nom d'utilisateur", préférez la "connexion adresse e-mail", avec une procédure de validation/confirmation
  • dans tous les cas, ce pourrait être une bonne idée de garder une trace de l'historique des modifications… si vous l'affichez sur un "profil utilisateur" ou pas dépend de votre cas d'utilisation spécifique
3
cedbeu

Je ne vois aucune réponse vérifiant la question la plus importante:

Le nom d'utilisateur est-il un secret sur votre site, ou non?

Si le nom d'utilisateur est affiché sur une page de profil utilisateur, ou en tant qu'auteur sur les messages du forum ou est consultable dans une liste de membres, il ne comporte aucune fonction de sécurité. Par conséquent, le modifier ou non n'a aucun sens pour la sécurité.

Si le nom d'utilisateur est un secret, par ex. vous avez un nom d'affichage différent ou affichez le nom complet de l'utilisateur mais utilisez un nom abrégé ou un alias à des fins de connexion - si le nom d'utilisateur est un secret, il affecte la sécurité, car un attaquant doit connaître à la fois le nom d'utilisateur et le mot de passe pour accéder à un compte.

Cependant, comme les utilisateurs ont tendance à réutiliser les noms d'utilisateur et ne considèrent généralement pas les noms d'utilisateur comme secrets de la même manière qu'ils le font avec les mots de passe, le nom d'utilisateur est un secret faible. Cela n'a également aucune importance dans de nombreuses attaques (MtM, enregistreurs de frappe, phishing, piratages de bases de données, etc., etc.)

Ainsi, même si votre nom d'utilisateur est un secret, les avantages de l'utilisabilité (décrits dans d'autres bonnes réponses) l'emportent de loin sur les considérations de sécurité.

2
Tom

Si vous autorisez les utilisateurs à utiliser des adresses e-mail comme noms de connexion, vous devez leur permettre de modifier leur connexion:

  • Si une personne quitte une organisation, elle risque de perdre immédiatement l'accès à cette adresse et la nouvelle adresse peut être attribuée à quelqu'un d'autre tout aussi rapidement. (J'ai dû changer de FAI sans préavis quand ils ont réalisé qu'ils ne pouvaient pas connecter ma nouvelle maison après tout; les adresses e-mail sont devenues disponibles pour d'autres le même jour). Même si vous n'utilisez l'adresse que comme nom de connexion et jamais comme pour les e-mails réels, c'est un vecteur important et inutile pour les attaques d'ingénierie sociale.
  • Si vous leur permettez de modifier l'adresse e-mail que vous utilisez pour envoyer des e-mails tout en vous connectant avec l'ancienne adresse qui prête à confusion, une mauvaise UX et conduira à des appels d'assistance.
1
Chris H

Nous devons examiner certaines des options possibles:

Pourquoi l'utilisateur voudrait-il changer son nom d'utilisateur?
-personnalisation
- ils ont un harceleur

Pourquoi voudriez-vous que l'utilisateur change son nom d'utilisateur?
- la polyvalence/personnalisation amène des clients fidèles

Pourquoi l'utilisateur ne voudrait-il pas que d'autres utilisateurs changent leur nom d'utilisateur?
- l'excuse hipster OG "j'étais le premier soccerkid96 il ne peut y en avoir d'autres"
- je ne peux vraiment pas penser à une autre raison

Pourquoi ne voudriez-vous pas que l'utilisateur change son nom d'utilisateur?
- une sorte de fraude d'identité? plusieurs comptes de phishing nommés d'après xXP0rn $ L @ yerXx, détenteur du record du monde avec le meilleur score
- pourrait être utilisé comme porte dérobée pour des informations ou peut-être une vulnérabilité pour la surcharge de la base de données ou DDoSing

Pour éviter la plupart des problèmes indésirables, je recommanderais un identifiant statique unique pour tous les comptes (sans rapport avec le nom du compte public), payer pour le changement de nom d'utilisateur, 1 changement de nom d'utilisateur par 5000 ans, etc.

1
Deathhound

Il y a pas mal de points pour et contre.

Par exemple, un utilisateur peut vouloir changer le nom pour éviter d'être reconnu car il a remarqué que googler son nom d'utilisateur sur le site A affiche son profil sur le site B.

D'un autre côté, il y a un point à ne pas permettre de le changer, afin que les gens puissent le reconnaître à nouveau sur votre site. Pensez à un forum avec un troll bien connu. Les gens savent comment le gérer et ne lui prêtent pas attention. Jusqu'à ce qu'il change de surnom. Bien sûr, ce n'est pas une vraie protection car il peut enregistrer un autre nom d'utilisateur, mais cela évite les abus en changeant le nom de chaque message.

Si le surnom est une sorte de clé primaire, vous ne pouvez pas autoriser sa modification. Pensez à une adresse e-mail ou à un identifiant Jabber. Certains sites vous permettent toujours de changer le nom et vous devez être prudent. Si vous envisagez de changer votre pseudo Twitter, vous feriez mieux d'enregistrer l'ancien nom par la suite pour éviter d'être associé au nouvel utilisateur. C'est un point pour verrouiller le nom d'utilisateur pour une utilisation future après la suppression du compte également.

Un nom d'utilisateur fait partie du processus de connexion, donc le changer peut arrêter une attaque par force brute. Selon le site même sans que l'attaquant sache si le mot de passe est erroné ou si l'utilisateur entier n'existe pas.

En fin de compte, je penserais que le nom d'utilisateur devrait être unique et probablement pas modifiable et verrouillé après la suppression du compte, mais vous devriez fournir un moyen de définir un nom d'affichage qui est plus visible que le descripteur de compte.

Jetez un oeil à SO, qui utilise des ID ou un bon vieux ICQ qui utilise un schéma de numérotation. Les gens doivent utiliser le nom d'affichage dans leur liste de contacts, car qui se souvient de tous les UIN de ses amis?

Enfin, votre décision n'a pas besoin d'être définitive. Vous pouvez toujours passer à l'autre modèle. Rendre les noms d'utilisateur fixes modifiables ne devrait pas être un gros problème, la correction des noms d'utilisateur modifiables nécessitera probablement des explications pour vos utilisateurs.

1
allo