Mot de passe en clair dans mysql_connect()

WRInaute discret
Bonjour,

Afin de sécuriser mes connections avec ma base de données je voudrais savoir si il est possible de ne pas écrire en clair mon de passe de base de données dans la commande mysql_connect($host, $user,$passwd)
dans mes fichiers ? ou alors avec une ruse de siou ?

D'avance merci pour votre aide
 
WRInaute accro
http://www.commentcamarche.net/php/phpbdd.php3
Rappel: Les variables ne sont pas visibles par vos visiteurs étant donné que le script (portant l'extension .php) est systématiquement interprété par le serveur Web
enfin, y'a peut-être une astuce...mais c'est plutôt ce qu'il y a autour qu'il faudrait contrôler :
http://www.phpsecure.info/v2/article/php-security.php

pour éviter d'arriver à ce genre de chose :
<?
copy("page.php","page_source.txt");
?>
Il suffit maintenant à l'attaquant de consulter le fichier page_source.txt pour récupérer vos mots de passe d'administration de MySQL.
voir le reste de la commande sur le lien cité ci-dessus...
 
WRInaute discret
merci pour vos réponse :)

en fait c'est pas pour protéger des visiteurs mais des développeurs (cf. loi Sarbanes & Oxley)

le md5 je sais pas si ça fonctionne car dans mysql les mots de passe sont chiffrés avec une fonction qui est PASSWORD...

quelques tests s'imposent, mais bon c'est pas gagné :?
 
WRInaute accro
Avec mysql y'a la fonction MD5() aussi... mais là n'est pas la question car il s'agit du mot de passe de la bdd, pas d'un mot de passe utilisateur... ou j'ai rien compris ??
Comment tu fais pour comparer avec la bdd si le mot de passe de connexion à la bdd est ok sans être au préalable connecté à cette même bdd pour récupérer le bon mot de passe ? :p
 
WRInaute passionné
Tu le met en clair dans un fichier conf.php, lui même dans un répertoire data. dans .htacess, tu met deny from all.

Ainsi, suel une page du domaine peut appeler le fichier. et il est invisible pour tout le monde.
 
WRInaute passionné
Ce n'est pas ce qu'il demande.

Mais je ne pense pas que cela est possible mis à part modifier et recompiler php pour que la fonction mysql_connect connaisse elle-même le code.
Mais le problème sera le même. Le mot de passe est inutile dès que l'on a la possibilité d'utiliser des requetes sur la base.
 
WRInaute impliqué
dd32 a dit:
Avec mysql y'a la fonction MD5() aussi... mais là n'est pas la question car il s'agit du mot de passe de la bdd, pas d'un mot de passe utilisateur... ou j'ai rien compris ??
Comment tu fais pour comparer avec la bdd si le mot de passe de connexion à la bdd est ok sans être au préalable connecté à cette même bdd pour récupérer le bon mot de passe ? :p

C'est simple, tu hash ton mot de pass mysql en md5(), puis tu créer un script php pour le "casser", puis ensuite tu te connecte à mysql

Ralala, que vous etes betes :roll:
 
WRInaute accro
Zim' a dit:
C'est simple, tu hash ton mot de pass mysql en md5(), puis tu créer un script php pour le "casser", puis ensuite tu te connecte à mysql

Ralala, que vous etes betes :roll:
Certes, bête je suis :lol: mais je n'en voyais pas l'intérêt car j'avais zappé cette ligne :
franck05 a dit:
en fait c'est pas pour protéger des visiteurs mais des développeurs
maintenant je comprends mieux...:wink:
 
WRInaute impliqué
Moi je dis, vous hackez le serveur de la NSA pour crypter votre CS et le contenu de votre base de donnée, que vous encryptez ensuite avec un algo à vous, et vous diffusez le tout en morse via un flux mp3 en streaming...


dsl... mais le topic me parait tellement inutile...
 
WRInaute impliqué
Grantome a dit:
Tu le met en clair dans un fichier conf.php, lui même dans un répertoire data. dans .htacess, tu met deny from all.

Ainsi, suel une page du domaine peut appeler le fichier. et il est invisible pour tout le monde.
ou encore un fichier .htconf auquel seul a accès le root et personne via le web...
 
WRInaute discret
Moi je dis, vous hackez le serveur de la NSA pour crypter votre CS et le contenu de votre base de donnée, que vous encryptez ensuite avec un algo à vous, et vous diffusez le tout en morse via un flux mp3 en streaming...


dsl... mais le topic me parait tellement inutile...

oui toi aussi tu m'as l'air assez inutile :D
sais tu au moins ce qu'est Sarbanes et Oxley, et as tu réellement compris la problématique ? si c'est non, vas jouer aux billes
 
WRInaute impliqué
non je sais pas ce qu'est sarbanes et oxley, mais oui j'ai bien compris la problématique... et j'vois surtout un probleme la ou il n'yen a pas vraiment...

Sinon, dis moi ce qu'est sarbanes et oxley, j'me coucherai moins con... ou alors j'vais jouer aux billes.
 
WRInaute discret
justement pour comprendre la problématique faudrait peut etre savoir ce qu'est SARBOX, pour savoir : google est ton amis :lol:
 
WRInaute impliqué
franck05 a dit:
justement pour comprendre la problématique faudrait peut etre savoir ce qu'est SARBOX, pour savoir : google est ton amis :lol:

Sur qui je jette en premier des cailloux ??? Franck05 ou Zim ?

Google est ton AMI aussi... alors on se calme, on ouvre Google, et on cherche comment crypter un mot de passe dans le code PHP. Si on trouve pas du premier coup, on essaye d'affiner ses mots clés. Et si on y arrive pas, on peut demander de l'aide sur le forum, tout en restant aimable avec les gens qui [essayent] de t'aider.

Pour donner mon petit coté constructif à ce topic, j'avais déjà vu ce sujet sur le forum phpBB-fr, pour savoir comment crypter son mot de passe de connexion SQL dans le code de phpBB.

Enfin, pour Zim, si je t'envoie des cailloux, ils se transformeront en bisous :lol: :lol: ;) =====> [ ]
 
WRInaute accro
Comprend pas

Un simple script PHP dans un sous-répertoire ad hoc

../sous_repertoire/nom_du_script.php

Tu dponne au sous_repertoire la permission: lecture et exécution, et au script nom_du_script.php lecture et exécution:

chmod 404 sous_repertoire
chmod 404 nom_du_script.php

( dans le cas ou le Safe Mode est positionné et où le serveur PHP est compilé comme module, car l'utilisateur du script incluant le script nom_du_script.php , est le même que celui d'apache, et non pas celui de l'uitlisateur FTP; )

Ensuite, tu peux inclure ce fichier dans tous les scripts où tu as besoin des données d'identification, et puis tu déclare tes variables d'identification comme globales.

include("../sous_repertoire/nom_du_script.php");

global $bdd_url;
global $bdd_name;
global $bdd_user;
global $bdd_passwd;


Evidemment, dans tes instructions de connexion, tu utilises les variables...

Du moment que les varaiables sont dans un script PHP, elles n'apparaissent pas si quelqu'un se connecte sur ce script.

Evidemment, si ce script était un fichier texte, la basta t'es mort, mais que veut le peuple ? ;)

Amicalement.

Jean-François Ortolo
 
WRInaute impliqué
expldr Genzo

moi je dis: "Faisez gaffe aux pigeons"...

vous noterez que je suis casse couille....





oui j'avoue
 
WRInaute passionné
Zim' a dit:
dd32 a dit:
Avec mysql y'a la fonction MD5() aussi... mais là n'est pas la question car il s'agit du mot de passe de la bdd, pas d'un mot de passe utilisateur... ou j'ai rien compris ??
Comment tu fais pour comparer avec la bdd si le mot de passe de connexion à la bdd est ok sans être au préalable connecté à cette même bdd pour récupérer le bon mot de passe ? :p

C'est simple, tu hash ton mot de pass mysql en md5(), puis tu créer un script php pour le "casser", puis ensuite tu te connecte à mysql

Ralala, que vous etes betes :roll:

Tu fais comment pour retrouver ton mot de passe à partir d'un md5 ?
C'est un hashage avec perte d'information donc non bijectif.
 
WRInaute accro
Suede a dit:
Zim' a dit:
Tu fais comment pour retrouver ton mot de passe à partir d'un md5 ?
C'est un hashage avec perte d'information donc non bijectif.


Bof...
S'il était possible de retrouver le mot de passe à partir du md5, à quoi servirait le md5 ?

Si tu penses que l'on peut avoir accès au contenu de tes scripts PHP, de toute façon, aucun cryptage ne sera efficace, car il sera toujours possible de disposer des données et du traitement pour les utiliser...

En fait, l'astuce de PHP, c'est que quand on veut charger le contenu d'un script PHP, ce n'est pas son contenu que l'on a, mais ce qu'il renvoie en HTML au navigateur. Ceci parce que le script PHP est interprété par l'interpréteur PHP du serveur Web.

Donc: La bonne et strictement seule solution pour cacher tes données ( ce n'est pas la peine ni possible de les crypter ), c'est de les mettre dans des scripts PHP.

Aussi simple que celà, et c'est l'enfance de l'art du programmeur PHP.

Il est vrai que je ne sais pas s'il est possible d'aspirer un fichier script PHP avec, par exemple, la fonction fopen($url,"r"); , avec comme variable $url l'url de ton script, mais je crois que là également, le contenu lu, est le contenu HTML renvoyé par le script.

Si je me trompe, merci beaucoup de me détromper.

En tout cas, la fonction file($url); qui est censée faire la même chose ( lecture de fichier ), rend bel et bien le contenu HTML, j'ai testé, alors...

Amcialement.

Jean-François Ortolo
 
WRInaute impliqué
euh, c'était du 50 eme degré...

puis notez que j'ai pas parlé de décrypté pas de "casser" le md5...

bref du second degré techniquement correcte niveau vocabulaire en plus ^^
 
WRInaute impliqué
Y a absolument pas besoin de crypter son mdp dans une source php, parce que dans tous les cas, si le mec vous chope une page de code en clair, c'est généralement qu'il a réussi à introduire votre ftp, et que de toute facon, si vous avez un algo pour crypter, il vous en faut un pour décrypter, donc il tombera également sur votre algo de décrypt, donc inutile.

C'est tout simple ^^
 
WRInaute passionné
Si tes développeurs ont accès au ftp, même si tu arrives à mettre le code dans un répertoire inacessible via ftp.

Ils pourront faire une page php, faire un appel à la fonction de connection, et afficher les données.

Sinon, je pense que c'est plutot au niveau de la conception du site : sépare, le contenu du code.
Passe par des templates situées dans un répertoire où tu interdis l'execution de script php. Tu donnes juste accès à ce répertoire

François
 
Discussions similaires
Haut