Hachage de mot de passe et assistance à votre utilisateur


10

Nous avons récemment adopté une meilleure stratégie de stockage des mots de passe, avec toutes les bonnes choses:

  • Les mots de passe sont stockés après avoir traversé bCrypt
  • L'utilisateur reçoit un lien d'activation lors de la création du compte pour confirmer la propriété de l'adresse
  • Mot de passe oublié sans question de sécurité, un lien est envoyé à leur email.
  • Le lien expire au bout de 24 heures, date à laquelle il devra en demander un nouveau.
  • Si le compte est créé à partir de notre personnel, un e-mail est envoyé avec un mot de passe fort aléatoire. Lors de la connexion, l'utilisateur doit le réinitialiser à quelque chose que nous ne savons pas et qui est bCrypt'd.

Maintenant, cela est conforme aux "meilleures pratiques", mais cela a augmenté notre quantité de demandes d'assistance de la part d'utilisateurs réguliers qui ne comprennent pas tout cela, ils veulent juste se connecter.

Nous recevons souvent des demandes d'utilisateurs qui se plaignent de:

  • Mot de passe incorrect (de celui dont ils ont besoin pour réinitialiser, ils le collent souvent avec un espace à la fin). Ils nous disent ce qu'ils utilisent mais nous n'avons aucun moyen de leur dire quel est leur véritable mot de passe.
  • Dire qu'ils ne reçoivent pas l'e-mail que nous leur envoyons (activation, réinitialisation, etc.). Ce n'est souvent pas le cas, après de nombreux dépannages, nous avons généralement découvert qu'ils avaient fait une faute de frappe dans l'e-mail, qu'ils ne vérifiaient pas le bon compte de messagerie ou qu'il était simplement entré dans le dossier spam.

Nous ne pouvons bien sûr pas l'essayer pour eux car nous n'avons pas le mot de passe. Nous enregistrons les tentatives infructueuses mais nous effaçons également le mot de passe qu'ils ont utilisé car il s'agit probablement du mot de passe utilisé pour un autre compte et nous ne voulions pas le stocker dans un fichier journal en texte brut. Cela ne nous laisse pratiquement rien pour les aider lorsqu'ils signalent des problèmes.

Je suis curieux de savoir comment la plupart des gens gèrent ces problèmes?


2
En plus d'être un peu plus descriptif dans les e-mails que votre système envoie aux utilisateurs, je ne vois pas ce que vous pourriez faire différemment tout en maintenant les meilleures pratiques. Vous fait souhaiter que vous puissiez simplement gifler les utilisateurs stupides.
Bernard

1
Les gens sont stupides, vos utilisateurs, plus que la plupart des autres, je ne vois pas la question ici?

8
Jarrod, tu insultes tes utilisateurs. Le seul idiot ici, c'est toi. Vous ne comprenez pas le niveau de connaissances informatiques de vos utilisateurs. Aucun homme offensé, mais vous écrivez des logiciels pour les gens pas pour les geeks informatiques. Si vous ne voyez aucun doute, cela signifie que tous ces experts en utilisation devraient être licenciés, car ils ne sont pas vraiment nécessaires. C'est juste un problème avec les "gens stupides", donc nous - les développeurs intelligents les bannissons du Web et le problème disparaîtra :) Si quelqu'un a écrit un système que seul l'auteur peut utiliser, vous ne voyez pas de problème?
Slawek

2
@Slawek: non, vraiment, les gens sont stupides.
Bryan Boettcher

@JarrodRoberson, ce ne sont pas seulement ses utilisateurs - lorsqu'il s'agit d'applications Web destinées au public, c'est généralement ce que vous obtenez. Cela dit, que cela vous plaise ou non , cela prend toujours des ressources de soutien, et c'est une question très valable.
GrandmasterB

Réponses:


7

Mot de passe incorrect (de celui dont ils ont besoin pour réinitialiser, ils le collent souvent avec un espace à la fin). Ils nous disent ce qu'ils utilisent mais nous n'avons aucun moyen de leur dire quel est leur véritable mot de passe.

Fixable à la place en incluant un lien avec un GUID unique qui les connecte et les oblige à réinitialiser le mot de passe. Ne forcez pas l'utilisateur à copier-coller. (Aussi, pourquoi ne pas supprimer les espaces à la fin du mot de passe dans votre formulaire.)

Dire qu'ils ne reçoivent pas l'e-mail que nous leur envoyons (activation, réinitialisation, etc.). Ce n'est souvent pas le cas, après de nombreux dépannages, nous avons généralement découvert qu'ils avaient fait une faute de frappe dans l'e-mail, qu'ils ne vérifiaient pas le bon compte de messagerie ou qu'il était simplement entré dans le dossier spam.

Assurez-vous que votre e-mail sortant est dé-spammé (peut-être configurer des comptes de test sur certains services de messagerie courants), enregistrez tout ce qui se passe et signalez-le à l'utilisateur s'il essaie de demander une nouvelle réinitialisation (par exemple, envoyez un courrier électronique à johndoee @ gmail .com a échoué, utilisateur introuvable, l'avez-vous épelé correctement?). Soyez également clair pour les utilisateurs sur les problèmes d'orthographe et de spam.

En outre, OpenID et d'autres authentifications tierces sont également une option, comme d'autres l'ont dit.


certaines personnes mettent des espaces dans leurs mots de passe?
soandos

Certaines personnes coupent et collent des mots de passe générés automatiquement et incluent des espaces au début et / ou à la fin accidentellement. (Lisez la question.)
Macke

3

Je dirais d'utiliser une méthode d'authentification tierce, comme Facebook, OpenID, Google ... tout ce qui convient à vos utilisateurs. Cependant, si vos utilisateurs ne se souviennent pas de votre mot de passe, ils ne pourront peut-être pas utiliser un système d'authentification tiers ...

Selon votre situation, vous pourrez peut-être utiliser un autre système, comme les certificats clients SSL (ils sont définitivement difficiles à installer pour les utilisateurs finaux, mais si c'est une entreprise et que vous pouvez automatiser son installation, c'est génial), Windows SSO, une application mobile, etc.


Les certificats clients sont une idée terrible. Ils ne sont pas sûrs et sont un cauchemar à réparer à distance en cas de problème. Openid est une bonne idée cependant
Tom Squires le

Comment les certificats ne sont-ils pas sécurisés?
Bernard

@bernard toute personne qui se trouve sur ce PC possède le certificat. Il est également assez facile de s'en sortir avec un virus
Tom Squires

1
Je suis d'accord pour dire qu'ils ne sont aussi sûrs que la machine sur laquelle ils résident, mais c'est un tout autre problème.
Bernard

3

Avez-vous même besoin de le faire? La première chose à faire est de déterminer ce que vous protégez et contre qui vous le protégez. Peut-être que cela ne vaut tout simplement pas le coût des meilleures pratiques, et peut-être que les meilleures pratiques n'arrêteront même pas votre attaquant.

Si vous êtes opposé à la NSA et avez quelque chose qu'ils veulent, abandonnez et simplifiez la vie de vos utilisateurs. Si vous avez des numéros de carte de crédit, vous devrez faire face aux problèmes que requiert le niveau de sécurité requis, car il y a des méchants qui en veulent et qui dépenseront de l'argent et du temps pour les obtenir. Si c'est l'accès à un album photo de famille, avez-vous besoin de toute cette sécurité?

Lisez les travaux de Buce Scheiners (Secrets and Lies) comme un bon début pour comprendre la sécurité.


3

La première chose qui saute aux yeux, c'est que vos e-mails vont dans le courrier indésirable. Configurer un e-mail pour qu'il soit reconnu comme réel n'est pas anodin. Je vous suggère de voir comment empêcher que votre e-mail ne soit signalé de manière incorrecte (question distincte sur SO?)

La deuxième chose que je recommanderais est de donner à vos utilisateurs un site Web / application en un clic qui initie les e-mails de récupération de mot de passe. Refuser de le faire autrement que par e-mail, ce n'est pas sûr et crée un mauvais précédent.


Ce n'est pas que le courrier électronique soit un moyen particulièrement sûr de transmettre des informations sensibles. Si seuls les utilisateurs réguliers pouvaient être gênés par les clés GPG et ssh ...
tdammers

@tdammers, je suis d'accord que ce n'est pas si sûr. Il est cependant devenu la clé de voûte de votre identité en ligne (pour le meilleur ou pour le pire). Il n'y a actuellement aucune alternative plus viable.
Tom Squires

Oui il y a. Courriel crypté. Je l'utilise tout le temps, et cela m'énerve que même les grandes entreprises ne prennent pas la peine de proposer le cryptage pubkey pour les e-mails sensibles. Ce n'est même pas difficile à mettre en œuvre. Je trouve étrange qu'il existe des lois (au moins ici aux Pays-Bas) qui rendent SSL obligatoire pour les informations sensibles, mais en même temps, l'envoi des mêmes informations via SMTP ordinaire est jugé acceptable.
tdammers

@tdammers Je n'en sais pas assez pour le recommander moi-même. Son OP vaut indéniablement le coup d'œil
Tom Squires

2

Le fait qu'ils soient prêts à vous appeler et à vous dire leur mot de passe à haute voix vous indique que pour ces utilisateurs, le mot de passe et les informations qu'il protège ne sont pas si importants. Je ne ferais jamais aucune de ces choses avec mon mot de passe bancaire. Mais il existe un certain nombre de sites qui exigent des mots de passe pour des choses qui ne les méritent vraiment pas. J'ai un mot de passe standard que j'utilise pour tous ceux-ci, et plus "hé ce n'est pas un mot de passe fort" ou "nous allons vous faire un mot de passe et vous forcer à le changer régulièrement" et ainsi de suite, moins je veux utiliser ce service. J'aurais une courte conversation avec les gens de "valeur commerciale" dans votre vie pour voir si en fait simplement les garder en texte brut dans la base de données et les envoyer par courrier électronique aux gens sur demande serait une meilleure approche.

Si en fait cela devait être aussi sécurisé, vous pourriez essayer ce que l'un de mes clients a fait avec le système que nous avons codé pour eux. Lorsque vous êtes au téléphone avec la personne, accédez à la base de données et remplacez son adresse e-mail par la vôtre. Ensuite, allez sur le Web et cliquez sur Mot de passe oublié. Attendez l'e-mail et utilisez-le pour vous connecter. En utilisant le site Web, changez le mot de passe en Mot de passe ou autre chose que vous acceptez verbalement avec le client. Remplacez leur adresse e-mail par leur propre adresse et dites-leur que "tout est réglé, votre nouveau mot de passe est actif maintenant!" Client heureux et vous n'avez pas à leur expliquer ce qui se passe.


2
La modification directe de la base de données est une faille de sécurité en soi. Cela signifie que vous pouvez vous faire passer pour n'importe quel utilisateur utilisant votre système.
Bernard

3
Mes clients avaient une application Windows avec laquelle ils pouvaient modifier n'importe quel champ pour n'importe quel utilisateur, par exemple s'ils recevaient un fax disant qu'ils avaient maintenant un nouveau numéro de téléphone. Bien sûr, il a été vérifié. Bien sûr, quand j'ai vu cette procédure écrite collée au mur près du bureau d'assistance, je n'étais PAS HEUREUX. Mais j'en suis venu à l'accepter, et il y a une piste d'audit montrant ce qui se passerait si quelqu'un appelait et se plaignait que son mot de passe a été réinitialisé sans son consentement. Le fait est que tout ne doit pas être aussi sécurisé. Et les utilisateurs vous disent que cela n'a pas besoin d'être.
Kate Gregory

1
Malheureusement, la plupart des utilisateurs ne savent pas mieux. Il appartient aux développeurs d'applications logicielles d'appliquer les meilleures pratiques.
Bernard

4
Je suis d'accord que c'est un gros trou de sécurité. Et je suis d'accord que c'est peut- être la solution la plus appropriée. Il semble cependant incroyablement idiot que le support client doive changer temporairement l'adresse e-mail du client pour réinitialiser le mot de passe de cet utilisateur: si vous laissez le support client réinitialiser les mots de passe, laissez-les le faire directement.
John Bartholomew

4
Je voudrais également noter que révéler des mots de passe en texte brut que les utilisateurs ont définis (en fait, stocker des mots de passe en texte brut) est, à mon avis, extrêmement pire que de donner au support client la possibilité de changer directement les mots de passe des utilisateurs.
John Bartholomew

2

la méthode de dernier recours que j'ai utilisée sur un système avec des utilisateurs très analphabètes dans le passé était de diriger l'utilisateur vers un écran où on leur a donné un numéro de téléphone et un numéro de confirmation. Ils ont appelé le numéro de téléphone, vérifié leur identité par des moyens manuels puis lu la confirmation. la personne de soutien s'est connectée à un système distinct, a saisi le numéro et a obtenu un deuxième numéro à redonner au client. le client a utilisé le deuxième code pour continuer vers la page de réinitialisation du mot de passe. la version client de la page n'a pas pu être exécutée à partir des sous-réseaux du personnel de support et l'écran de support n'a pas pu être exécuté à partir des clients.

il n'est pas à l'épreuve des balles car une personne de support pourrait utiliser un vpn pour exécuter les deux extrémités à partir d'un seul emplacement, mais cela suffisait pour l'audit car le compte de support était connecté comme responsable de l'activité


-5

Peut-être en mettant en œuvre des règles de sécurité qui ne sont pas folles. En faisant cela, tout ce que vous obtenez est vraiment moins de sécurité, car le système est si difficile à utiliser que vos clients réévalueront vos mots de passe pour vous et leurs amis juste pour le faire fonctionner!

Ne pouvez-vous pas simplement leur envoyer des liens NORMAUX, puis un mot de passe ci-dessous. Si le lien est rompu par le client de messagerie, affichez simplement le formulaire avec un champ "code d'activation" ... "tapez le code d'activation que vous avez dans l'e-mail" ... 5 chiffres afin qu'ils ne confondent pas 0 avec O, etc. 4 les chiffres sont ok pour les cartes de crédit et vous avez besoin d'une politique si compliquée pour une connexion simple? Si le code ne fonctionne pas, répétez la vérification avec la chaîne TRIMmed? Je suppose que cela ne le rendra pas moins sûr, non? :)

Pour moi, cela arrive souvent aussi ... je double-clique sur le mot de passe et l'espace de fin est copié. Je ne peux pas croire pourquoi Peple ne peut pas comprendre juste pour supprimer les caractères blancs de fin lorsque la vérification a échoué et répéter le processus? Alors peut-être faire basculer le boîtier de la lettre pour que je vérifie si je n'ai pas appuyé sur CL accidentellement.

Vous l'avez trop compliqué. Ce n'est pas "réinitialiser le mot de passe" et "mot de passe initial" ... mais "Code de confirmation" et "Entrez le numéro de confirmation que nous vous envoyons par e-mail", "Vous n'avez pas d'e-mail? Il a été envoyé à xxx@yyy.com, vérifiez votre spam à nouveau, ne l'avez toujours pas? Renvoyez votre e-mail de confirmation ". Dans le corps HTML, un lien. http://xxx.com/conf-12345-mymail-gmail-com.html . Aucun client de messagerie ne rompra cela.


5
La politique de sécurité qu'il a mentionnée est non seulement non "INSANE" mais devrait être une exigence de toutes les applications "SANE". Les liens comme celui-ci envoyés par e-mail doivent expirer après un certain temps pour empêcher la réinitialisation du mot de passe (soit en volant directement le lien, soit en tombant dessus via un algorithme assisté par ordinateur). Les mots de passe devraient probablement être supprimés avant d'être validés. Les utilisateurs SONT stupides. C'est la loi. La réponse n'est pas de réduire nos mesures de sécurité mais de prendre des mesures proactives pour aider nos utilisateurs à comprendre les procédures appropriées.
Dalin Seivewright

7
-1. C'est une façon sensée de le faire, que la plupart des sites utilisent. Si j'émets un "mot de passe oublié" sur un site et que je reçois un e-mail avec mon mot de passe en texte brut, je ferme mon compte.
Matt Grande
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.