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 :

Crypter un mot de passe svn avec PHP [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut Crypter un mot de passe svn avec PHP
    Bonjour,

    Tous d'abord, je vous pris de bien vouloir m'excuser si je poste dans la mauvaise catégorie, je n'en ai pas trouvée qui s'approche de mon problème.

    Dans le cadre d'un gestionnaire de Projet que j'écris en PHP, j'execute depuis celui ci plusieurs commandes pour créer des svn, configurer leurs accès et leurs liens avec apache.

    Tout fonctionne mais il y a une chose qui m'ennuie.

    Dans les fichiers .passwd de mes svn qui contiennent les utilisateurs du svn, je dois mettre un mot de passe crypté type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idleman:TYU3636BDI35DO32ZIND
    J'ai cru comprendre que c'était du sha1, aussi lorsue je veux ajouter un autre utilisateur je fais naturellement un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_put_content('username:'.sha1('user_password'),fichier.passwd);
    mais cela ne me retourne pas un bon cryptage, je me demandais donc comment avoir l’équivalent du cryptage SVN pour les mots de passes depuis PHP.

    Merci

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_put_content('username:'.crypt('user_password', base64_encode('user_password')),fichier.passwd);

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Bonjour !!

    Merci pour la réponse (et rapide avec ça ^^) malheureusement ça ne correspond pas, quand j'ajoute l'utilisateur "tata" ayant pour mdp "toto" depuis le shell,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ sudo htpasswd -s /etc/apache2/projet.passwd tata
    ça me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tata:{SHA}C5wmJdwh7wX2rU3fR8XyA4N6oyw=
    Si je passe par PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump('tata:{SHA}'.crypt('toto', base64_encode('toto')));
    Ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tata:{SHA}dGBFd1w14G286
    Est il possible que mon svn passe plutot par un cryptage sha1 bizarre ? Peux on changer la méthode de cryptage?

    Merci pour ton suivis

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    fait -d au lieu de -s

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    On se rapproche je le sent !! Malheureusement ça ne correspond toujours pas

    Ajout depuis le shell

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ sudo htpasswd -d /etc/apache2/projet.passwd titi
    Résultat :

    Depuis PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump('titi:'.crypt('toto', base64_encode('toto')));
    Résultat :

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    y'a pas toto dans ta commande

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    ben toto je le rajoute quand le shell me demande le mot de passe , la commande ne contient que le login

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Idleman Voir le message
    ben toto je le rajoute quand le shell me demande le mot de passe , la commande ne contient que le login
    non, faut lui dire le mot de passe, sinon le mot de passe est aussi titi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo htpasswd -d /etc/apache2/projet.passwd titi toto

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    oO heuh désolé de te contredire mais sans le mot de passe ça fonctionne très bien, il est d'ailleurs demandé par la console en tout lettre (signe qu'il le prends en compte) j'utilise la commande depuis deux ans sur plusieurs svn et utilisateurs et mes mots de passes ont toujours été bien réglé.

    De plus la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo htpasswd -d /etc/apache2/projet.passwd titi toto
    Ne fonctionne pas, elle me renvoie sur le manuel d'usage...

    Peut être est ce fonction de la distributions de linux? Je suis sous ubuntu...

    nb : j'ai lu dans le manuel que si je met -p ça met le mdp en clair, c'est peut être une solution si je n'arrive a rien.. est ce très craignos niveau sécurité?

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    ah oui c'est parce que il est demandé
    mais tu sais que tu peux le faire en PHP directement, et avec tes utilisateurs dans une base


    En version simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $username = 'toto';
    $password = 'tata';
     
    if (!isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) 
        || $_SERVER['PHP_AUTH_USER'] !== $username 
        || $_SERVER['PHP_AUTH_PW'] !== $password) {
        header('WWW-Authenticate: Basic');
    }

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Ha? depuis une base MySQL c'est possible? Comment fait on?

    Sinon une idée de la raison pour laquelle le cryptage n'est pas identique en php et avec le shell?

    Sinon j'ai reussi a ajouter direct le mdp avec ta commande en ajoutant le parametre "-b"

    Ajout depuis le shell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ sudo htpasswd -d -b /etc/apache2/projet.passwd tyty toto
    resultat :
    Ajout depuis php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump('tyty:'.crypt('toto', base64_encode('toto')));
    resultat
    encore un FLOP ^^

  12. #12
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    à tout hasard, tu fais bien les tests shell/php sur la même machine ?
    (Sinon je me souviens également avoir déjà eu à générer des .htpasswd et je n'utilisais pas de salt en fait)
    Vive les roues en pierre

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Hum... il se pourrait que non..

    Mais le cryptage n'est il pas sensé être le même partout ?

    Tu me met un doute la, je vais tester sur la machine

  14. #14
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Non, depuis PHP ça dépend de l'OS et config il me semble.
    Vive les roues en pierre

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    ouai mais je au boulot je suis sous win et y'pas le crypt strandard

  16. #16
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Bon j'ai essayé sur mon serveur et ça ne correspond pas non plus... c'est a n'y rien comprendre, a croire que le cryptage généré est aleatoire...

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    fais en PHP tu t’embêtera moins

  18. #18
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    C'est toujours la galère ce truc... avec les anciennes versions de PHP je me souviens avoir même été obligé de réimplémenter une fonction de hashage à des fins de portabilité.

    Quelques autres pistes mais il faut tout tester sur la même machine car les 2 commandes sont OS/config dependent :
    1) As-tu quand même essayé d'utiliser crypt() avec un salt auto ? Il me semble que c'est ce qui a le plus de chances de fonctionner :
    crypt('toto');
    Quand tu passes base64_encode('toto') en salt, je ne vois pas comment ça pourrait correspondre avec la version en ligne de commande.

    Citation Envoyé par man htpasswd
    The SHA encryption format does not use salting: for a given password, there is only one encrypted representation. The crypt() and MD5 formats permute the representation by prepending a random salt string, to make dictionary attacks against the passwords more difficult.
    Donc a priori, tu ne pourras pas générer le salt toi-même, d'où l'utilité de laisser crypt() le faire tout seul.

    2) lancer htpasswd depuis PHP.

    3) Tu dois aussi pouvoir utiliser directement crypt dans le shell au lieu de htpasswd. En fait je crois que c'est htpasswd qui embrouille tout car on ne sait pas quel salt il va générer avant d'appeler crypt (la commande batch) et de cela va dépendre le résultat mais aussi la méthode de hashage. EDIT : En fait dans ton cas c'est différent tu le sais vu que c'est toi qui le fait Je pensais plutôt au cas où on est dépendant de la config de l'hébergeur.

    good luck

    docs : http://linux.die.net/man/1/htpasswd
    http://fr2.php.net/manual/fr/function.crypt.php
    http://linux.about.com/od/commands/l/blcmdl3_crypt.htm
    Vive les roues en pierre

  19. #19
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Bon finalement je revois ma copie comme on dit car ce que je proposais (crypt() sans salt) est plutôt destiné aux situations où on a pas la main sur le serveur et qu'on ne sait pas trop ce que fait htpasswd mais vu que t ugénère toi-même tes pass pour SVN c'est différent, voilà la soluce pour du SHA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '{SHA}'.base64_encode(sha1('toto', true));
    (pas trouvé comment avoir la même chose avec crypt() sinon voilà une page intéressante : http://httpd.apache.org/docs/2.2/mis...cryptions.html)
    Vive les roues en pierre

  20. #20
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 95
    Points : 52
    Points
    52
    Par défaut
    Yeaahh ta dernière solution pour le sha1 fonctionne au poil merci Djakisback !!

    Jvais enfin pouvoir cloturer ce projet il ne me manquait que ça !!

    merci encore !!

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

Discussions similaires

  1. Mots de passe sécurisés avec PHP 5.5
    Par grunk dans le forum Langage
    Réponses: 26
    Dernier message: 16/07/2014, 13h56
  2. Mots de passe sécurisés avec PHP 5.5
    Par grunk dans le forum Langage
    Réponses: 1
    Dernier message: 18/04/2014, 09h24
  3. Mots de passe sécurisés avec PHP 5.5
    Par grunk dans le forum Langage
    Réponses: 1
    Dernier message: 18/04/2014, 09h24
  4. [MySQL] Création d'un login et mot de passe securisé avec PHP/MySQL
    Par NicoMontreal91 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 28/09/2008, 22h01
  5. [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

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