Comment allusion à la mise en œuvre d'une fonction de réinitialisation de mot de passe sécurisé sans envoyer à l'utilisateur un e-mail? Il existe un autre peu d'informations sécurisées que je stocke et seul l'utilisateur doit savoir, mais il semble peu sécurisé de simplement laisser l'utilisateur à mettre à jour un mot de passe simplement parce qu'ils connaissent un numéro de 9 chiffres. P>
Notez que les données utilisateur sont stockées dans une table SQL simple en raison de limitations sur les utilisateurs de la base de données réelles sur le serveur que je travaille. P>
Toute entrée serait appréciée. P>
MISE À JOUR: B>
Après une tentative d'OpenID et de vous rappeler que ce serveur n'autorise pas PHP (et donc curl) de faire des demandes externes, j'ai essayé d'envoyer un courrier avec PHP. Apparemment, toutes mes anciennes expériences terribles avec courrier () sur ce serveur sont parties. P>
Merci pour toutes vos contributions, je peux regarder à nouveau OpenID à l'avenir. P>
4 Réponses :
sans envoyer de courrier électronique que vous vous limitez de manière significative. L'un des avantages de l'envoi d'un code de réinitialisation du mot de passe ou d'un nouveau mot de passe à l'adresse e-mail de quelqu'un est que vous pouvez compter sur l'hypothèse selon laquelle elles sont la seule personne ayant accès à leur compte de messagerie. p>
Cela dit, vous pouvez utiliser un schéma "question secret" pour permettre à quelqu'un de réinitialiser leur mot de passe. Lorsque cette personne crée son compte, vous devez capturer leur question secrète et la réponse. Vous inviterais ensuite l'utilisateur avec cette question et seul permis de réinitialiser s'ils répondent correctement. P>
Je dois vous avertir que ce n'est pas une très bonne méthode de sécurisation de leur mot de passe d'un accès non autorisé. Pour un bon article, lisez: http://www.schneier.com/ Blog / Archives / 2005/02 / The_Curse_of_th.html P>
La "question secrète" est le vecteur d'attaque le plus vulnérable dans un système. Mieux ne pas l'utiliser.
Oui, je suis conscient de la manière dont elle est plus sécurisée, j'essaie simplement de l'éviter si possible.
Je dirais que c'est moins que vous peut i> s'appuyer sur un email mono-utilisateur, et plus que tout le monde le fait. Juste B / C Tout le monde le fait, ne le rend pas bon.
@Rex m - Voir ma réponse à votre commentaire ci-dessus. Compte tenu de ma mise en garde, j'ai fourni ainsi que l'article sur les inconvénients de cette méthode, votre commentaire ajoute rien à la discussion. Vous ne fournissez aucune solution alternative non plus.
typiquement, identifier un utilisateur comme étant réel sur Internet nécessite un modèle "opt in" dans lequel l'utilisateur "opte" pour réinitialiser leur mot de passe et qu'un email est envoyé confirmant qu'ils veulent soit réinitialiser, soit été réinitialisé et quel est le nouveau mot de passe de réinitialisation. P>
Vraiment, les seules alternatives raisonnablement sûres sont celles qui utilisent une méthode similaire. Envoyez un courrier électronique, envoyez un message texte par SMS, ils doivent répondre à un appel téléphonique automatisé où ils doivent frapper des chiffres, etc. P>
La seule méthode que je puisse penser qui n'utilise pas ce système serait une question de sécurité. Les banques utilisent souvent celles-ci pour une vérification supplémentaire lorsque les utilisateurs se connectent ou ne parviennent pas à se connecter correctement à plusieurs reprises. Ils sont parfois également utilisés comme code "secret" pour récupérer un mot de passe, mais même alors, il est généralement envoyé par courrier électronique à l'utilisateur, non affiché sur la page. P>
Les deux premiers paragraphes de votre réponse sont sur place, mais le dernier est affreux. «Questions de sécurité» sont inacceptablement i> insécurité. Ils sont le vecteur d'attaque le plus vulnérable dans un système - ne les utilisez pas!
Je considérerais à peine son paragraphe affreux. Seul l'OP peut déterminer ce qui est "acceptable" sécurisé pour les besoins de son application. Compte tenu de sa réticence / incapacité à envoyer un email, il s'agit d'une alternative appropriée.
Je conviens que les questions de sécurité ne sont pas très sécurisées, c'est pourquoi j'ai dit qu'ils ne sont généralement utilisés que pour une vérification supplémentaire. C'est un dernier type de recours, la seule méthode que je pouvais penser à cela n'a pas utilisé de courrier électronique.
PUNT sur le problème du mot de passe. Passer à OpenID. Vous n'avez pas à vous soucier de la réinitialisation du mot de passe, et l'utilisateur n'a besoin que d'un nouveau mot de passe s'il en veut un. P>
C'est une victoire gagnant. p>
Ce n'est pas une inscription ouverte. Ce n'est que pour des personnes spécifiques.
Comment vérifiez-vous que ce n'est que ces personnes créant des comptes? Vous pouvez faire cette vérification et utiliser OpenID. Par exemple. - La bêta de superutilisateur utilise OpenID, mais seuls ceux avec un mot de passe peuvent l'utiliser.
OpenID ne signifie pas que l'enregistrement est ouvert, seul le protocole est utilisé pour l'identification.
@hobodave - Je dirais que repenser vos exigences est applicable à la question.
Hmm ... Y a-t-il un bon moyen de laisser l'utilisateur choisir d'utiliser le système d'authentification "Legacy", si vous voulez ou laissez-les utiliser OpenID? Ou devrais-je commencer une autre question?
Une autre question pourrait vous aider avec des détails, mais vous pouvez créer une fonctionnalité "Ajouter un OpenID à ce compte" (similaire à la manière dont Stackoverflow le fait) pour les membres existants.
Marqué comme réponse en raison du fait que cela m'a fait essayer un courrier (), m'a également fait penser à essayer plus fort pour OpenID à l'avenir.
Vous n'avez aucun moyen de savoir qui essaie de réinitialiser le mot de passe "Joe ''s". Cela pourrait être Joe, ou pourrait être quelqu'un qui pose comme Joe. P>
Une alternative à l'envoi d'un courrier électronique consiste à appeler l'un des téléphones de Joe avec une clé de réinitialisation unique ou d'envoyer un message SMS. P>
appeler le téléphone de Joe avec un message audio est facile avec http://www.twilio.com/ Mais tout le monde pourrait être capable de ramasser le téléphone de bureau de Joe. Donc, habituellement, vous voudriez un défi supplémentaire avant d'appeler. Par exemple une question / réponse secrète. En utilisant le téléphone et em> le Secret Q & A, vous avez rendu les choses plus difficiles pour les mauvais gars mais toujours faisable de Joe. P>
Une autre idée est d'envoyer le message de réinitialisation à quelqu'un que Joe Trusts et qui connaît Joe. (Envoyez soit par courrier électronique, soit par téléphone / SMS.) Une variante de ceci est d'envoyer à un employé qui connaît Joe, par exemple sa SalesRep assignée, RH Rep, etc. P>
Utilisez le message: envoyez une lettre de messagerie d'escalier avec le code de réinitialisation. Prendrait quelques jours pour y arriver, mais le vol de courrier est un PAR fédéral. Voir http://www.postalthods.com/ S'il existe de très mauvaises résultats négatifs, cela peut être une bonne solution. P>
Pour l'une des réponses ci-dessus, Joe entrerait les informations lorsqu'il installe le compte. P>
Un autre motif est d'exiger que Joe appelle à un service d'assistance et laisser un humain interroger à lui. p>
La ligne de fond est qu'aucune technique n'est parfaite. Voir l'histoire Twitter Breakin: http://www.technewsworld.com/ Story / 67612.html? WLC = 1247790901 & WLC = 1248238327 P>
La dernière pensée: N'oubliez pas d'anti-phishing. Souvent fait en activant Joe de choisir une image que le site lui montrera quand cela fait quelque chose d'important. L'idée est qu'un site de phishing ne puisse pas reproduire l'interface utilisateur, augmentant ainsi les soupçons de Joe qu'il peut ne pas être arrivé sur le site droit. P>
Est-ce que cela ne se sent pas sûr car le nombre à 9 chiffres se trouve être leur numéro de téléphone?
chiffres, olny est faible. utiliser alphanumérique, majuscule et minuscule
Les numéros de téléphone sont à 10 chiffres en Amérique du Nord. Je suppose que c'est un SSN.
Est-ce que cela ne se sent pas sûr parce que vous le savez, et je ne peux pas simplement le vérifier? Parce que ça devrait. Vous ne devez stocker que de stocker une hachage de toutes les informations de type connexion (réinitialisation d'un compte de mot de passe).
Ce serait un nombre à 10 chiffres .... (123) -456-7890
C'est en fait un numéro d'étudiant universitaire. (Womp est le plus proche)
Oui, définitivement ne comptez pas que personne d'autre ne sait que. Comme il est imprimé sur des formulaires qu'un étudiant peut lancer et un plongeur de benne à ordures chanceux peut trouver.
@Rampion - ils devront également connaître leur nom d'utilisateur de leur site Web, que je ne pense pas être réellement imprimé. En outre, je ne stocke pas leurs vrais noms dans la table des utilisateurs; Ils sont exportés vers un fichier CSV hors ligne pour le cas rare que je dois connecter leur nom d'utilisateur à un nom réel. Mais toujours, j'envisage d'autres options.
Content de l'entendre! Une bonne sécurité est difficile, elle mérite une considération approfondie. Leur site Web Nom d'utilisateur ne peut pas être imprimé, mais cela peut être prévisible par un attaquant - [FirstInitial] [MiddleIntial] [Nom] [Numéro]? Ou, s'il est défini par un utilisateur, [communusernamétheyuseEonevereeever]?
En fait, je leur dis d'utiliser leur nom de connexion universitaire. La plupart sont 3 lettres suivies de 4 numéros, pas séquentielles. Les plus anciens sont [FirstIntiital] [1-9] [Nom].
Droite, donc celles-ci sont prévisibles. De plus, je parie que leur université leur donne une adresse email à l'aide de ce nom de connexion? En tout cas, j'essaie simplement de faire l'argument qui devinait le nom d'utilisateur du site Web pour un étudiant, étant donné que vous avez déjà trouvé leur vrai nom et son numéro d'étudiant ne serait pas difficile.
Nope, le nom de connexion n'a rien à voir avec l'adresse e-mail. Et les noms de connexion de style ancien avec [FirstInitial] [1-9] [Nom] ne sont plus émis et seront partis de mon système au cours des 2 prochaines années. En outre, je reçois ce que vous dites, c'est juste que beaucoup de vos hypothèses sont fausses :)