IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] Comment décrypter mon password sauvé en MD5 dans ma DB?


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut [Sécurité] Comment décrypter mon password sauvé en MD5 dans ma DB?
    Bonjour à tous et a toutes,

    voici mon problème, je voudrais récupérer le password que j'ai encrypter en MD5 dans ma DB et le renvoyer en clair à un user lorsque celui ci a perdu ses identifiants !

    Comment puis je faire lorsque je récupère le password via ma query?

    D'avance merci à tous.

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pas possible, c'est le but de md5 !

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Ha merde,

    Et comment pourrais je faire, car je vais pas envoyer la valeur MD5 du password ! De plus pour la sécurité c'est quand même mieux de les crypter!
    Y'a pas un autre moyen d'encryption qui permet de revenir en arrière?

    Car créer une table password non cryptée c'est aussi un risque de sécirutée!

  4. #4
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    hello,

    fais comme tout le monde : envoye un nouveau mot de passe...
    Google is watching you !

  5. #5
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Enfin l'idéal serait d'envoyer par mail une URL contenant un "code" valable une seule fois et uniquement pendant une courte durée (2/3 heures par exemple), et permettant de fixer un nouveau mot de passe.

    Ainsi, si ce n'est pas le "vrai" utilisateur qui a demandé une réinitialisation du mot de passe, celui ci ne sera pas changé.
    Google is watching you !

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    +1 pour cette dernière solution. J'aime pas trop voir arriver dans ma boite des mails contenant "votre nouveau mot de passe est : aR56fre5"

    Je rajouterais même un mécanisme de vérification supplémentaire comme le principe des questions personnelles, afin de renforcer encore l'idée qu'on a affaire à la bonne personne. Mais bon il faut aussi savoir arrêter à un certain moment la parano

  7. #7
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Merci à tous pour vos idée,
    grace à vous je vais contourner mon problème et donner un pass temporaire et il devra ensuite taper l'ancien avant de donner un nouveau...

    Encore merci a tous

  8. #8
    Membre habitué
    Inscrit en
    Août 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 142
    Points : 156
    Points
    156
    Par défaut
    Oué mais si il a oublié son mot de passe, a koi sa sert de lui envoyer un mot de pass temporaire afin qu'il te redonne l'ancien, qu'il a oublié!

  9. #9
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Citation Envoyé par Kioob
    Enfin l'idéal serait d'envoyer par mail une URL contenant un "code" valable une seule fois et uniquement pendant une courte durée (2/3 heures par exemple), et permettant de fixer un nouveau mot de passe.
    Salut Kioob,
    Comment s'y prendre ( ou quel fonction ?) pour faire un code valable une seule fois ou bien de courte durée ... je suis interessé par ce concept.

    Merci d'avance


    Effectivement zulkifli à raison sinon.

    ++
    ShinJava

  10. #10
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Oui c'est vrai que zulkifli a raison, autant pour moi !

    Pour le mot de passe temporaire, j'ai ma ptit idée tu mes 2 champs de type timestamp dans ta table temp_password avec un start time et l'autre end time, tu vérifie que le mot de passe généré et sauver dans cette meme table est bien dans l'interval de temps start - end !

    Si oui ok il va créer un nouveau password(sans taper l'ancien qu'il a oublié, lol ), sinon il refait la manoeuvre pour recevoir un nouveau,...


    Moi c'est comme ça que j'imagine la chose ShinJava, mais si zulkifli a une meilleur idée moi je suis toujours près à l'entendre.

    Merci à tous les deux, ciao

  11. #11
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Yep Devil, en gros c'est ça.

    Dans les grandes lignes ça donne :
    1) l'utilisateur signale qu'il a perdu son mot de passe
    2) dans la base de données tu ajoutes une ligne contenant 3 valeurs : l'identifiant de l'utilisateur (id, login, email ou autre) + date de péremption ( NOW() + INTERVAL 2 HOUR par exemple ) + un code alléatoire ( exemple : md5(uniqid(mt_rand(), true)) )
    3) tu envois un email au gars contenant juste un lien pointant vers ton script, avec ce code alléatoire en paramètre
    4) l'utilisateur clic sur le lien, tu verifies que le code en question existe bien dans la base, et n'est pas "périmé". Si ce n'est pas le cas tu l'envois bouler.
    5) tu lui demande son nouveau mot de passe.
    6) tu enregistre ce nouveau mot de passe, et tu efface le "code alléatoire"

    + il faut aussi prévoir une petite routine qui efface les "code alléatoire" qui n'ont jamais été utilisés.


    Et pendant qu'on y est, pour enregistrer le mot de passe dans la base de données tu utilies crypt() au lieu de md5(). Mais c'est un autre débat.
    Google is watching you !

  12. #12
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Merci à toi Kioob je vais utiliser mt_rand() pour générer un code aléatoire que je garderai utilisable pendant 2h par exemple, histoire que le gars ai le temps de se connecter, on ne sais jamais.

    De plus je trouve ton idée du lien très bonne !

    Par contre dans le mail tu lui fournirai son ancien Login?
    Ou il recréer de nouveaux identifiants(Login,Password)?
    Moi je dirai qu'il vaut mieux ne pas modifier le Login, det lui renvoyer et lui faire changer uniquement de password? Je ne sais pas ce qui est mieux.

    Mais bon c'est mon avis et je ne m'y connais pas trop, je débute donc j'aimerai prendre la température par rapport à ce qui se fait en général !

    En tout cas un tout grand merci a toi, ciao

  13. #13
    Membre actif
    Avatar de nicolas.pied
    Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Janvier 2005
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur d'Etudes

    Informations forums :
    Inscription : Janvier 2005
    Messages : 249
    Points : 235
    Points
    235
    Par défaut
    Sinon tu peux utiliser les fonctions de la librairie mcrypt, elles te permettront de crypter et de décrypter tes mots de passes à partir d'une clés.
    Un peu d'humour : jokes.guppix.fr
    Articles et actualités informatiques : Kbups.org
    Articles sur le développement informatique : nicolaspied.developpez.com

  14. #14
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    De plus je trouve ton idée du lien très bonne !
    merci, même si ce n'est pas vraiment de moi à l'origine

    Pour générer le code alléatoire, utilises carrément : md5(uniqid(mt_rand(), true)). C'est plutot fiable.

    Pour le login, il faut évidement conserver le même Et il faut donc sûrement l'ajouter dans le lien de l'email donc.
    Le but est que ce soit fiable mais très simple pour l'utilisateur : en gros il devrait juste avoir à cliquer sur le lien, et là sur ta page tu ne fais que demander le nouveau mot de passe. Et tu peux bien sûr lui rappeler son login des fois qu'il l'aurait aussi oublié.


    nicolas.pied : le problème c'est que du coup le mot de passe est décryptable... et si un pirate a accès à ta base de données, il a surement accès à tes scripts aussi... et donc à la clé de décryptage...

    A ce sujet : http://matthieu.developpez.com/authentification/
    Google is watching you !

  15. #15
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 147
    Points : 78
    Points
    78
    Par défaut
    Citation Envoyé par Kioob
    nicolas.pied : le problème c'est que du coup le mot de passe est décryptable... et si un pirate a accès à ta base de données, il a surement accès à tes scripts aussi... et donc à la clé de décryptage...
    Que veux tu dire par là?
    Comme dans l'explication de Mathieu que md5 donne toujours la meme valeur, comma dans l'exemple avec toto et que si le hacker présumé posède un dictionnaire md5 il pourra facilement dire que la mot de passe 15567676... est égale à toto?

    Merci a toi !

  16. #16
    Membre actif
    Avatar de nicolas.pied
    Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Janvier 2005
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur d'Etudes

    Informations forums :
    Inscription : Janvier 2005
    Messages : 249
    Points : 235
    Points
    235
    Par défaut
    Sur ce principe, si la personne à accès à la base et aux scripts, alors elle peut trouver la clef de cryptage ; mais personne ne peut également garantir qu'avec votre solution, elle ne soit pas capable de modifier un mot de passe de la base de données afin d'usurper l'identité d'un membre existant ou autre.

    Accès à la base + accès au scripts = contrôle total de toute façon et pour toutes solutions.

    Donc mcrypt vaut bien votre méthode je pense, c'est juste une question de choix.
    Un peu d'humour : jokes.guppix.fr
    Articles et actualités informatiques : Kbups.org
    Articles sur le développement informatique : nicolaspied.developpez.com

  17. #17
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je suis d'accord. Même s'il ne passe plus inaperçu.

  18. #18
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Coté "sécurité" pour l'application, il est vrai que cela revient au même. Ca, c'est certain.

    Mais perso je me place du coté du visiteur : comme l'ont montrés certaines études (et quelques tests persos) la plupart des visiteurs utilisent les mêmes mots de passe partout (moi y compris). Ce qui veut dire que si votre site se fait hacker, même si pour le site ce n'est pas forcément "grave" ça peut devenir très problématique pour l'internaute.

    Il me semble d'ailleurs avoir entendu parler d'un site qui avait reçu une plainte de ce genre : un internaute avait porter plainte comme quoi il s'était fait "pirrater son mot de passe" à cause du site en question.

    Enfin bref, s'il s'agissait d'une information que l'on a besoin de récupèrer (carte bleue par exemple) je dis pas. Mais dans le cas d'un mot de passe, il existe des méthodes permettant de ne pas avoir à le conserver, donc autant le faire.





    Citation Envoyé par Devil666
    Que veux tu dire par là?
    Comme dans l'explication de Mathieu que md5 donne toujours la meme valeur, comma dans l'exemple avec toto et que si le hacker présumé posède un dictionnaire md5 il pourra facilement dire que la mot de passe 15567676... est égale à toto?
    Oui, la méthode MD5 étant la plus répendue, je suis sûr qu'il y a moyen de trouver des dictionnaires de mot de passe "pré-calculés".
    Tandis qu'en utilisant un grain de sel, c'est impossible à faire.

    De plus, crypt() est une fonction standard sous Unix. Beaucoup de logiciels l'utilisent pour le stockage des mots de passe (les comptes utilisateurs sous linux par exemple). Autre avantage : le "salt" de crypt contient également le "code" de l'algorythme. Ce qui veut dire que si crypt() gère plus tard le SHA1, il n'y aura sûrement qu'un seul caractère à changer dans tes scritps pour en tenir compte... et les mots de passe déjà cryptés dans la base de données resteront valides...
    Google is watching you !

Discussions similaires

  1. Comment Deployer mon projet JEE sous Eclipse dans Tomcat
    Par linabgte dans le forum Tomcat et TomEE
    Réponses: 13
    Dernier message: 26/02/2014, 14h04
  2. [SQLSERVER 2K] pb, comment décrypter un md5 ?
    Par MeHo_ dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/07/2008, 19h47
  3. [Sécurité] Comment crypter input password ?
    Par stringman62 dans le forum Langage
    Réponses: 15
    Dernier message: 04/04/2007, 09h56
  4. Réponses: 1
    Dernier message: 17/03/2007, 21h21
  5. [Sécurité] Comment amélioré mon code ?
    Par Nadd dans le forum Langage
    Réponses: 14
    Dernier message: 03/03/2006, 20h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo