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?
la source
Réponses:
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.)
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.
la source
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.
la source
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é.
la source
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.
la source
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.
la source
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é
la source
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é à [email protected], 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.
la source