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é] Crypter un mot de passe


Sujet :

Langage PHP

  1. #1
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut [Sécurité] Crypter un mot de passe
    Salut,
    Je suis en train de faire un site où les gens doivent s'inscrire. Pour l'instant les mots de passe sont enregistrés en clair dans la base de données. Donc toute personne ayant accès à la base peut les voir.

    De quelle façon peut on crypter les mots de passes?

    j'ai pensé à la fonction base64_encode() qui renvoi une chaine a priori sans sens. Mais bon je ne suis pas sur que cela soit très sécurisé car il est très facile de les decoder...

    merci

    Julien

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    La solution simple : md5() sur ton mot de passe.
    Quand un membe souhaite se loguer, tu compares son pseudo et le md5 du mot de passe envoyé à ce que tu as dans la base.
    Autre solution : stocker le md5 du md5... Ainsi, tu peux envoyer crypter le mot de passe en md5 via Javascript avant qu'il transite par le réseau, ce qui ajoute un niveau supplémentaire de sécurité.


    Ce sujet a été amplement traité je ne sais plus où sur le forum. Il me semble que la solution que je viens de te donner a été présentée (avec davantage de détails) par vg33. [Edit : c'est ici => http://www.developpez.net/forums/showthread.php?t=98673]

    Certains programmeurs préfèrent crypt() à md5(). À chacun de voir sa préférence.

  3. #3
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Bonjour,

    J'allais répondre la même chose qu'Yogui avant de voir sa réponse

    Pour ma part, j'utilise la fonction sha1(), elle stocke plus de caractères que md5(). Je ne sais pas si cela a une influence sur la sécurité, peut-ête est-elle accrus car plus difficile à décrypter ?

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Bof, tout dépend des autres mécanismes de sécurité : par exemple, si tu empêches à quelqu'un de faire plus de 3 tentatives infructueuses en un temps donné, ça réduit largement plus les risques qu'en utilisant sha1(). Plus cette période de ban est longue, plus tu empêches les attaques (mais plus tu embêtes un membre qui a sincèrement oublié son mdp).
    Autre chose : les attaques par dictionnaire ne sont valables que si on laisse à l'attaquant le temps de tester son dico. S'il est ralenti avec ma suggestion précédente, ça nous laisse un répit. Si, en plus, un mécanisme de changement du mot de passe est mis en place (mettons toutes les 2 semaines : il faut un temps court pour que cela soit utile), alors c'est le top et il y aura vraiment une très faible proba pour que l'attaquant ait un résultat qui lui serve.

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Je rajouterais juste que si aujourd'hui sha est préféré à md5 c'est parceque jusqu'à l'heure actuel on n'à pas encore réussi à le faire défaillir.

    En revanche md5, à subit plusieurs attaques, notamment sur les *probabilités* de créér des chiffrement identique avec deux contenus différents, ou collisions.

    M'enfin bon, ce n'est pas comme si tu faisais le site d'une banque hein
    Donc ces détails sont mineures pour le moment.

  6. #6
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    Effectivement, je ne fais pas le site d'une banque et ce que vous m'indiquez me semble parfait.
    Merci pour vos conseils.
    @+
    Julien

  7. #7
    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 Yogui
    Bof, tout dépend des autres mécanismes de sécurité : par exemple, si tu empêches à quelqu'un de faire plus de 3 tentatives infructueuses en un temps donné, ça réduit largement plus les risques qu'en utilisant sha1().
    Désolé pour cette intrusion
    Tu t'y prend comment pour l'histoire du nombre des tentatives ?
    Faut-il faire cela selon une variable (session) qui s'incremente à chaque fois que la tentative à échouer ? (et la au bout de 3, on refuse la personne de valider le formulaire)
    Ou bien, stocké l'IP de l'attaquant dans une BDD + une colonne tentative (qu'on incremente à chaque tentative raté). Dès qu'on arrive à 3, on met l'IP dans une table BANNI qui sera verifier à chaque fois que quelqu'un rempli le formulaire (c'est un peu lourd non ?).
    Merci pour vos futurs éclaircissement.

    ++
    ShinJava

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Tout dépend de la durée maxi que tu autorises entre 2 tentatives. Si ça commence à durer, il vaut mieux passer par la BDD (plus sûr mais légèrement plus coûteux à mettre en place), sans quoi ta variable de session risque d'expirer...

    Je recommande la version BDD mais attention à réinitialiser le compteur au bon moment !

  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 Yogui
    Tout dépend de la durée maxi que tu autorises entre 2 tentatives. Si ça commence à durer, il vaut mieux passer par la BDD (plus sûr mais légèrement plus coûteux à mettre en place), sans quoi ta variable de session risque d'expirer...

    Je recommande la version BDD mais attention à réinitialiser le compteur au bon moment !
    Merci pour cette précision Je vais me tourner vers la solution BDD dans ce cas la.

    Bonne journée.
    ++
    ShinJava

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] Crypter un mot de passe UNIX avec PHP
    Par dom78 dans le forum Langage
    Réponses: 3
    Dernier message: 15/05/2006, 19h28
  2. [Sécurité] Renvoyer un mot de passe crypté
    Par psychoBob dans le forum Langage
    Réponses: 6
    Dernier message: 23/04/2006, 00h43
  3. Crypter un mot de passe
    Par Rupella dans le forum MFC
    Réponses: 6
    Dernier message: 30/03/2006, 09h23
  4. Crypter un mot de passe
    Par Badaboumpanpan dans le forum Modules
    Réponses: 1
    Dernier message: 30/01/2006, 10h23
  5. comment crypter les mots de passe?
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/11/2005, 16h37

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