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 :

[FTP] Meilleure méthode d'encryption fichier de config


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut [FTP] Meilleure méthode d'encryption fichier de config
    Bonjour

    J'ai créé une application qui utilisera un fichier de configuration. Je veux que ce fichier soit crypté de manière à ce que les utilisateurs qui l'ouvriront ne voient pas le mot de passe pour la base de donnée et pour qu'ils ne puissent modifier son contenu.

    Quelle est la meilleure méthode, si possible sans mcrypt qui est, si j'ai bien comprise, une extension de PHP et non une fonction intégrée (corrigez moi si je me trompe ). Je dois, moi, être capable de le décrypté pour être en mesure de le modifier bien sur.

    Merci!

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut eh eh...
    salut,
    et bien alors, pour ce qui est de la modifiction du fichier, je pense qu'en lui mettant un attribut de lecture seulement cela devrai suffir.
    Pour ce qui est du mdp qui pourait etre AZERTY, tu peu par exemple le noyer dans un text du style EFEFEFDDSSAZERTYFDGQ2244FEef"4FZEFFFFFefsdf
    et le recuperer dans un script en mettant le text ds une variable $pass et recuperer ce dont tu à besoin avec la fonction substr par exemple
    voila une des multiples solutions, à vous de juger

  3. #3
    Fabouney
    Invité(e)
    Par défaut
    Moi je pense tout simplement qu'avec la librairie "mcrypt" tu hash ton password, avec une clé secrète que toi seul connait, et qui te permettera de "decrypter" le mot de pass pour l'utiliser.

    j'pense que cette méthode est optimale, après y'a tellement d'algorithme, etc moi persos je te conseil :

    algo : MCRYPT_RIJNDAEL_128 ou MCRYPT_RIJNDAEL_256

    en mode ECB

    Voila je te laisse regarder du coté de www.php.net pour la doc.

    Cordialement.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut
    Super merci

    Mais pour le lecture seulement, le problème d'affichage du mot de passe de la BD reste. C'est pour ca que je veux l'encrypté principalement mais aussi pour le rendre idiot proof

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par Prosis
    Mais pour le lecture seulement, le problème d'affichage du mot de passe de la BD reste.
    Quelle en est la raison ? Si des personnes ont accès à votre code source le problème sera le même car il sera possible en cherchant un minimum de retrouver l'algorithme. De plus, cette opération de chiffrage/déchiffrage demandera des opérations supplémentaires au serveur.

    Cependant, il ne faut pas oublier que le langage PHP étant interprété, le code des scripts n'est donc pas visible pour les clients (navigateurs généralement). Pour les autres fichiers, vous devriez au pire pouvoir les protéger à l'aide de fichier .htaccess (pour Apache en tout cas ).

    Pour ce qui est d'"encoder" son code source il y a différentes solutions (faire une recherche sur le forum Outils pour avoir une liste) et un article paru le mois dernier aborde le sujet avec l'extension bcompiler : http://maxime-ohayon.developpez.com/...els/bcompiler/

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Le code suivant permet de faire la même chose qu'avec mcrypt, mais je pense en plus avancé.

    Par exemple : Forum d'entraide sur les fonctions PHP donne avec cette fonction "AUFXalByBicPNlEiATNSCF0rUGAGbwYgASNQOAA0BzMGZQZ0U3AOLwUjUSIBO1Q3UnAAdQFgUWxXaQJoXHUHPgFoV2tQcwZyDwtRSgEH".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
     
    function GenerationCle($Texte,$CleDEncryptage) 
      { 
      $CleDEncryptage = md5($CleDEncryptage); 
      $Compteur=0; 
      $VariableTemp = ""; 
      for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++) 
        { 
        if ($Compteur==strlen($CleDEncryptage))
          $Compteur=0; 
        $VariableTemp.= substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1); 
        $Compteur++; 
        } 
      return $VariableTemp; 
      } 
    /* *************************************************************************************************************** */
    function Crypte($Texte,$Cle) 
      { 
      srand((double)microtime()*1000000); 
      $CleDEncryptage = md5(rand(0,32000) ); 
      $Compteur=0; 
      $VariableTemp = ""; 
      for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++) 
        { 
        if ($Compteur==strlen($CleDEncryptage)) 
          $Compteur=0; 
        $VariableTemp.= substr($CleDEncryptage,$Compteur,1).(substr($Texte,$Ctr,1) ^ substr($CleDEncryptage,$Compteur,1) ); 
        $Compteur++;
        } 
      return base64_encode(GenerationCle($VariableTemp,$Cle) );
      } 
    /* *************************************************************************************************************** */
    function Decrypte($Texte,$Cle) 
      { 
      $Texte = GenerationCle(base64_decode($Texte),$Cle);
      $VariableTemp = ""; 
      for ($Ctr=0;$Ctr<strlen($Texte);$Ctr++) 
        { 
        $md5 = substr($Texte,$Ctr,1); 
        $Ctr++; 
        $VariableTemp.= (substr($Texte,$Ctr,1) ^ $md5); 
        } 
      return $VariableTemp; 
      } 
    /* *************************************************************************************************************** */
    $Cle = "MotDePasseSuperSecret"; 
    $MonTexte = "Jocelyn est le plus beau du monde :)"; 
    $TexteCrypte = Crypte($MonTexte,$Cle); 
    $TexteClair = Decrypte($TexteCrypte,$Cle); 
    echo "Texte original : $MonTexte <Br>"; 
    echo "Texte crypté : $TexteCrypte <Br>"; 
    echo "Texte décrypté : $TexteClair <Br>";
     
    .>

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par julp
    Quelle en est la raison ? Si des personnes ont accès à votre code source le problème sera le même car il sera possible en cherchant un minimum de retrouver l'algorithme. De plus, cette opération de chiffrage/déchiffrage demandera des opérations supplémentaires au serveur.
    Oui mais cette mesure est destinée aux gens qui ne s'y connaissent pas beaucoup à l'interne de la compagnie qui utilise l'application. Exemple: Lucien entre au bureau et décide qu'il veut foutre le bordel. Il trouve le fichier conf.inc et l'ouvre dans son éditeur pour voir s'il ne peut pas avoir une information. Il voit le nom d'utilisateur et mot de passe de la bd. Mais si elle est cryptée, je doute qu'il prenne la peine et le temps de décoder. Hors de cet exemple je comprends ton point, et merci pour le liens je vais regarder ça

    jojoquiasa: Wow merci, je crois que je vais utiliser ces fonctions pour les mots de passes aussi. Où l'as-tu prise?

  8. #8
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 420
    Points : 15 789
    Points
    15 789
    Par défaut
    Citation Envoyé par Prosis
    Exemple: Lucien entre au bureau et décide qu'il veut foutre le bordel.
    dans ce cas, il peut très bien arracher les câbles d'alimentation de ton ordinateur et l'envoyer à travers la fenêtre, ça fera plus de pertes financières que le bazar dans une base de données. et en plus s'il vide la base de données, en quelques minutes vous pouvez tout récupérer à partir d'une sauvegarde

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut
    lol c'est sur mais je me vois mal expliquer à mes clients que le fichier de config est en clair parce que Lucien préfèrera envoyer son ordinateur par la fenêtre lol

    Non mais je crois que vous avez raison, je tente peut être d'être trop sécuritaire.

  10. #10
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 420
    Points : 15 789
    Points
    15 789
    Par défaut
    Citation Envoyé par Prosis
    Non mais je crois que vous avez raison, je tente peut être d'être trop sécuritaire.
    tu as tout à fait compris le message que je voulais faire passer

    de plus les mots de passe FTP et des bases de données sont souvent envoyés dans le même e-mail par les hébergeurs par exemple dans je parts du principe que si une personne a réussi à voir le code source, cette personne a aussi les mots des passe de tout ce qui se rattache à l'application autour

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut
    D'accord, mais en restant dans le cryptage, si j'encrypt un mot de passe avec sha1 ou hash, est-ce qu'il existe un moyen de le décrypter?

    Et jojoquiasa, est-ce que c'est toi qui a écrit cet exemple?

    Merci

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par Prosis
    D'accord, mais en restant dans le cryptage, si j'encrypt un mot de passe avec sha1 ou hash, est-ce qu'il existe un moyen de le décrypter?
    Non c'est tout le principe d'un hash : ces algorithmes ne sont pas réversibles car leur but est de générer une empreinte.

  13. #13
    Fabouney
    Invité(e)
    Par défaut
    Sauf si tu utilises la librairie MCRYPT avec un bon algo et une bonne clé, comme je disais un peu plus haut.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut
    Et elle doit être installée sur le serveur n'est-ce pas?

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par Prosis
    Et elle doit être installée sur le serveur n'est-ce pas?
    Cela va de soi et il est facile de contrôler que tel est le cas en consultant la sortie de phpinfo (entre autres).

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 440
    Points : 184
    Points
    184
    Par défaut
    Ah super merci!

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

Discussions similaires

  1. Variables de config, meilleure méthode ?
    Par Delprog dans le forum Zend Framework
    Réponses: 2
    Dernier message: 01/08/2008, 08h52
  2. [FTP] Gestion fichiers de config
    Par Dev@lone dans le forum Langage
    Réponses: 10
    Dernier message: 28/04/2008, 17h22
  3. Réponses: 19
    Dernier message: 12/08/2006, 16h32
  4. Réponses: 20
    Dernier message: 27/06/2006, 17h42
  5. Réponses: 3
    Dernier message: 24/06/2004, 11h23

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