2010-04-23 5 views
1

Je crée donc une page de connexion de base. J'ai une bonne idée de ce qu'il faut faire, mais je ne suis toujours pas sûr de certaines choses.Sécurité de base, PHP mySQl

J'ai une base de données complète d'étudiants et une colonne de mot de passe bien sûr. Je sais que je vais utiliser le cryptage md5 dans cette colonne. L'étudiant entre son e-mail et son ID d'étudiant, et ils reçoivent un mot de passe par e-mail si c'est correct.

Mais, où puis-je créer le mot de passe? Dois-je ajouter manuellement le mot de passe (qui est juste une chaîne générée aléatoirement) dans mySQL à tous les étudiants? Et je suis supposé envoyer le mot de passe à l'étudiant; comment saurai-je ce qu'il faut envoyer à l'élève si le mot de passe est crypté?

Je pensais à générer le mot de passe lorsque l'étudiant saisit son adresse e-mail et son identifiant. Ils reçoivent un e-mail de la chaîne aléatoire, et en même temps, j'ajoute la même chaîne aléatoire à la base de données, cryptée.

Est-ce que c'est comme ça que ça fonctionne? Et il se sent dangereux de le faire tous sur la même page.

Désolé pour la question longue et sinistre. Je trouve cela tout à la fois en même temps (cryptage AES et RSA: O)

Répondre

4

Quelques choses ici:

  1. Vous n'êtes pas vraiment cryptant, vous êtes ce hachant. Chose facile pour les débutants à confondre, mais je voulais juste faire sortir de la route. N'utilisez pas MD5, ce n'est pas un hachage très sécurisé. Utilisez l'une des variantes SHA à la place si possible.

  2. Ne vous contentez pas de saisir le mot de passe, vous devez également le "selecter". Fondamentalement, cela implique d'ajouter une chaîne aléatoire au mot de passe avant de le hacher, et de stocker cette chaîne aléatoire quelque part où vous pourrez la récupérer plus tard (afin de pouvoir valider le hachage lorsque l'utilisateur entre son mot de passe). Cela permet d'éviter les attaques de dictionnaire pré-calculées.

Comme pour générer le mot de passe, je pense que vous êtes sur la bonne voie - je voudrais juste générer quand ils créent leur compte, envoyez un courriel à eux, puis hachage et stocker le hachage (et un sel aléatoire) sur l'enregistrement utilisateur dans la base de données.

1

Si vous générez des mots de passe, générez un mot de passe et envoyez le mot de passe généré à l'étudiant. MD5 ce mot de passe et stockez-le dans la base de données. Quand quelqu'un se connecte, MD5 le mot de passe qu'il a soumis dans le formulaire et comparez ce hachage à celui de la base de données. S'ils correspondent, connexion réussie.

0

Ajout aux réponses précédentes, selon la méthode de hachage que vous choisissez, le processus va comme ceci:

1.- Il est conseillé de générer le mot de passe la première fois que les étudiants entrent dans leur carte d'identité et le courrier électronique.

2.- Lorsqu'ils soumettent leurs données, vous les recevez et générez le mot de passe de manière aléatoire en utilisant n'importe quelle méthode de hachage de votre choix et enregistrez-la dans votre BD.

3.- Quand ils veulent se connecter, demandez leur ID et mot de passe, utilisez la méthode de hachage sur le mot de passe entré et comparez-le avec celui qui est stocké.

4.- Si elles perdent leur mot de passe et que la méthode de hachage n'a aucun moyen d'être annulée ou inversée, vous devez implémenter une méthode pour créer un lien temporaire envoyé à l'e-mail de l'étudiant pour créer un nouveau mot de passe. . Si la méthode de hachage peut être inversée, il n'y a pas de problème, il suffit de la désarchiver et de l'envoyer à l'adresse électronique de l'étudiant.

Espérons que cela clarifie un peu le processus :)

+0

4 - Je suggère de ne jamais envoyer un mot de passe en texte clair à quiconque pour une raison quelconque. Il suffit que l'étudiant en crée un nouveau en utilisant la méthode du lien temporaire. – Jayrox

1

Votre PHP doit générer le mot de passe au moment de l'inscription. Envoyez le mot de passe par e-mail à l'étudiant puis exécutez-le via une fonction de hachage (md5() est correct mais sha1() est préférable). Stockez le hachage dans la base de données et supprimez le mot de passe d'origine. De cette façon même pas vous pouvez voir ce que c'est.

Lorsque l'utilisateur se connecte, inscrivez son mot de passe saisi et comparez-le avec le hachage stocké dans la base de données. Si elles correspondent, l'utilisateur a tapé le bon mot de passe.