[Php] Génération de clefs d'activation
|
06-12-2011, 23h06
(Modification du message : 19-11-2012, 19h08 par InstinctHack.)
Message : #1
|
|
Saitek
Membre Messages : 30 Sujets : 4 Points: 0 Inscription : Oct 2011 |
[Php] Génération de clefs d'activation
Bonjour, je développe actuellement mon petit site et je veux faire une inscription. Pour ça j'ai besoin d'une clef d'activation qui se génèrerait au moment de l'inscription et qui enverrait un mail de confirmation.
Voici la page d'inscription : http://pastebin.com/VbF4fzXp Et voici la page qui a pour but d'activer le compte : http://pastebin.com/Ee9gXXJE (je suis désolé pour l'indentation qui laisse vraiment à désirer mais les deux pages sont en plein chantier) En fait, le mail s'envoie très bien avec le lien pour activer. Sauf que le problème se situe au niveau de la génération de la clef. A l'inscription elle ne s'enregistre pas dans la table. Voici le code que j'utilise pour créer et inscrire la clef d'activation dans la table : Code PHP : // Génération de la clef d'activation L'erreur se situe bien ici ? Comment puis-je faire pour la résoudre ? Bien à vous, saitek fier membre. |
|
07-12-2011, 02h36
Message : #2
|
|
CyberSee
Admin fondateur de N-PN Messages : 1,721 Sujets : 287 Points: 157 Inscription : Jan 2012 |
Clef d'activation (génération ?)
Pour la clée, ce serais pas mal plus simple de faire ça
Code PHP : $clef_activation = md5(time()); // 32 characters long ou si tu as peut que 2 personnes s'incrive a la même miliseconde (ce qui est trèes peu probable lol) Code PHP : $clef_activation = md5( uniqid() ); // 32 characters long |
|
07-12-2011, 14h45
(Modification du message : 07-12-2011, 15h11 par Saitek.)
Message : #3
|
|
Saitek
Membre Messages : 30 Sujets : 4 Points: 0 Inscription : Oct 2011 |
Clef d'activation (génération ?)
Merci pour ta réponse CyberSee, oui effectivement ce serait plus simple. Cependant je n'ai pas besoin de crypter la clef. Je l'ai ainsi réduite à 8 caractères, ça me semblait suffisant.
Je vais tout de même tester ce code, merci Y'a des erreurs dans mon code ? Ou ça paraît bon ? Vous savez d'où peut venir le fait que la clef ne s'inscrive pas dans la table ? EDIT : super la clef d'activation s'inscrit dans la table. Par contre je tombe toujours sur une 404 avec le lien... |
|
09-12-2011, 10h38
(Modification du message : 09-12-2011, 10h39 par supersnail.)
Message : #4
|
|
supersnail
Éleveur d'ornithorynques Messages : 1,609 Sujets : 71 Points: 465 Inscription : Jan 2012 |
Clef d'activation (génération ?)
Bonjour,
Vérifie que ton lien pointe réellement vers ta page (ce qui ne doit pas être le cas, vu que ton serveur renvoie un 404). Ta page de validation est bien nommée activer-compte-utilisateur.php et se situe-elle bien à la racine du site? Ton lien te paraît cohérent? |
|
10-01-2012, 14h14
Message : #5
|
|
Saitek
Membre Messages : 30 Sujets : 4 Points: 0 Inscription : Oct 2011 |
Clef d'activation (génération ?)
Je vous prie de m'excuser pour la lenteur de ma réponse.
Ma page activer-compte-utilisateur.php n'était effectivement pas à la racine. Erreur corrigée depuis, même si entre temps j'ai opté pour un système pré-fait. Merci à toi aaSSfxxx |
|
12-01-2012, 01h04
Message : #6
|
|
teach
Newbie Messages : 8 Sujets : 1 Points: 0 Inscription : Jun 2011 |
Clef d'activation (génération ?)
CyberSee a écrit :Pour la clée, ce serais pas mal plus simple de faire ça Lol @CyberSee j'espere que t'ecris pas ça dans tes codes en production ou tu vas te faire owner matin midi et soir. Qu'est ce qui empeche un autre utilisateur de generer la meme clé sachant que md5() est deterministe et que la valeur de time() à ce moment est publique? |
|
12-01-2012, 05h47
Message : #7
|
|
CyberSee
Admin fondateur de N-PN Messages : 1,721 Sujets : 287 Points: 157 Inscription : Jan 2012 |
Clef d'activation (génération ?)
Dans le contexte d'un petit site tel que celui de Saitek, les chances que 2 personnes s'inscrivent à la même micro seconde sont assez mince et ce même s’ils sont en contact et ce mettent d'accord pour peser en même temps lol Mais pour répondre a ta question, non je n'utilise pas time() mais plutôt l'alternative que j'ai citée plus haut ;-)
|
|
12-01-2012, 20h07
Message : #8
|
|
Saitek
Membre Messages : 30 Sujets : 4 Points: 0 Inscription : Oct 2011 |
Clef d'activation (génération ?)
Qui te dit que j'ai un petit site :p
Je prépare secrètement le facebook de demain :eek: |
|
12-01-2012, 21h42
Message : #9
|
|
teach
Newbie Messages : 8 Sujets : 1 Points: 0 Inscription : Jun 2011 |
Clef d'activation (génération ?)
CyberSee a écrit :Dans le contexte d'un petit site tel que celui de Saitek, les chances que 2 personnes s'inscrivent à la même micro seconde sont assez mince et ce même s’ils sont en contact et ce mettent d'accord pour peser en même temps lol Mais pour répondre a ta question, non je n'utilise pas time() mais plutôt l'alternative que j'ai citée plus haut ;-) A premiere vue, l'alternative que tu proposes n'est toujours pas plus secure. uniqid() n'est pas si differend sous le capot que time(). Les 8 premiers caractères retournés correspondent simplement à la valeur de time() en hexa et les 5 derniers correspondent à la precision en millisecondes. Comme je l'ai dit plus haut, vu que la date à laquelle le clé à été generé est connu de l'attaquant, pour qu'il puisse regenerer la même clé il ne lui suffit que de connaitre les 5 derniers caractères restant. 5 caractères hexa c'est très facilement bruteforcable (de l'ordre de quelques minutes sur une machine courante). L'avantage de pouvoir regenerer une clé d'activation inconnu devient vite évident si tu considère les systèmes de reinitialisation de mot de passe. Dans un souci de completude, la meilleur solution serait d'utilliser uniqid avec son premier paramètre et surtout son second parametre à true pour plus d'entropie |
|
Utilisateur(s) parcourant ce sujet : 4 visiteur(s)