mot de passe limité dans le temps
Posté : 10 nov. 2006, 04:13
par evilcampbell
Bonjour,
Je souhaiterais sécuriser une partie de mon site par mot de passe. Mais je voudrais avoir à envoyer moi-même le mot de passe (jusque-là pas de problème) qui soit limité dans le temps, 24h00 par exemple.
Comment puis-je faire, sachant que le php c'est pas gagné pour moi. Si vous aviez des pistes.
Par avance merci
Posté : 10 nov. 2006, 07:39
par Ajoloca
Bonjour,
Une solution est de maintenir une colonne 'expire' qui sera de type 'DATETIME' ou 'TIMESTAMP'.
A la création du mot de passe tu l'allimentes par un ajout du temps souhaité
Exemple
Code : Tout sélectionner
mysql> select addtime(now(), '24:0:0');
+--------------------------+
| addtime(now(), '24:0:0') |
+--------------------------+
| 2006-11-11 06:21:51 |
+--------------------------+
1 row in set (0.00 sec)
Et pour savoir s'il a expiré, un simple test sur la différence de la valeur de la colonne et date-heure-minutes courrentes.
Posté : 10 nov. 2006, 13:30
par Hermès
Une autre solution est d'avoir l'information de la date dans le mot de passe :
- tu prend un mot-clef de N caractères (par exemple "abcd")
- tu concatènes la date
- tu crypte tout ça (pas du MD5 vu que ça te renvoie un truc trop long, il faut trouver un bon algorithme qui ne transforme pas une clef de 8 caractères en un truc de 32 (ou pire) caractères).
- tu file le résultat crypté à l'utilisateur
Quand l'utilisateur utilises son mot de passe tu le décrypte, tu vérifies que les N premiers caractères correspondent bien à ton mot clef "abcd" et tu regarde les derniers caractères pour savoir à quelle date le mot de passe a été généré. Tu compares avec la date courante, s'il est trop vieux tu bloque le mot de passe.
Quel est l'intérêt ?
-> tu n'as pas de mots de passe à sauvegarder en base de donnée, il faut juste que tu gardes secret le ou les mots-clef (ici on a juste "abcd" devant mais tu peux aussi mettre un autre mot-clef derrière).
Cette méthode est pas mal utilisée pour les récupérations de fichiers sur un site. Lorsque tu dis à l'utilisateur qu'il a la possibilité de télécharger un fichier en suivant un lien précis mais que ce lien ne sera valide que pendant un certain temps, tu peux utiliser un cryptage MD5 et avoir une clef très longue, tu t'en fout vu que ça sera l'adresse du lien et que l'utilisateur ne l'apprendra pas par coeur. Mais quand c'est un mot de passe, il vaut mieux qu'il puisse le retenir sans avoir à le sauver dans un fichier pour faire du copié/collé quand il en a besoin.