Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/07/2007, 18h04   #1
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
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!
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 18h24   #2
Membre éclairé
 
Inscription : juin 2007
Messages : 342
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 342
Points : 398
Points : 398
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
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 19h02   #3
Fabouney
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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.
  Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2007, 19h36   #4
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
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
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 01h12   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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/
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 10h54   #6
Candidat au titre de Membre du Club
 
Étudiant
Inscription : 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 : 10
Points : 10
Envoyer un message via MSN à jojoquiasa Envoyer un message via Skype™ à jojoquiasa
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 :
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>";
 
.>
jojoquiasa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 21h26   #7
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
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?
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 21h51   #8
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
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
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 22h02   #9
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
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.
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2007, 22h37   #10
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
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
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2007, 05h06   #11
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
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
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2007, 11h17   #12
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2007, 11h45   #13
Fabouney
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Sauf si tu utilises la librairie MCRYPT avec un bon algo et une bonne clé, comme je disais un peu plus haut.
  Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2007, 13h04   #14
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
Et elle doit être installée sur le serveur n'est-ce pas?
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2007, 13h50   #15
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2007, 14h24   #16
Membre habitué
 
Inscription : novembre 2006
Messages : 440
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 440
Points : 134
Points : 134
Ah super merci!
Prosis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h47.


 
 
 
 
Partenaires

Hébergement Web