Aller au contenu

securiser un fichier PHP qui accede a une BDD MySQL


sky99

Messages recommandés

on se connecte a une BDD avec

 @mysql_connect("$host","$base","$passe"); 

mais ce qui me gene, c'est le fait de mettre un login et un password MySQL

dans une page PHP. normalement ,certes le serveur n'est pas censé

afficher le code source d'une page PHP, mais si jamais ça arrivait?

d'ou mes deux questions:

1)

dans quels cas un serveur Web peut il afficher la source d'une page php?

dans quels cas,de meme, peut il autoriser le téléchargement

d'une page php?

bien sur ceci dans un optique ou l'on a normalement programmé sa page, et ou l'on ne veut pas que l'utilisateur puisse la télécharger ou en voir la source.d'autre part

je parle de serveurs web serieux, donc pas IIS ^_^ (donc ce qui m'interesse ici c'est apache)

2)quel autre moyen pourrait on utiliser pour se connecter a la BDD

en PHP qui n'entainerait pas la necessité d'avoir le login/password de la BDD "a l'air" dans le fichier PHP?

Lien vers le commentaire
Partager sur d’autres sites

1)

dans quels cas un serveur Web peut il afficher la source d'une page php?

Si le service PHP est arrêté ou mal configuré ou pas installé du tout.

dans quels cas,de meme, peut il autoriser le téléchargement

d'une page php?

En fait, c'est les mêmes cas. C'est même la même chose.

2)quel autre moyen pourrait on utiliser pour se connecter a la BDD

en PHP qui n'entainerait pas la necessité d'avoir le login/password de la BDD "a l'air" dans le fichier PHP?

Un fichier PHP, c'est le meilleur moyen. En fait, apache gère les transferts de données ainsi: tu demandes un fichier HTML, l'extension HTML (qui est interne) envoie le fichier HTML. Tu demande un fichier JPG, il transmet le JPG. Tu demandes PHP? Il lance l'exécutable PHP sur ton script et envoie ce qui en sort sur internet.

Tout cela est configuré avec apache: il gère les fichiers par type. Mais si le type de ton fichier n'est pas connu (par exemple, fichier .xyz), il le traite comme un fichier HTML, donc il envoie le contenu du fichier sur internet.

Si le module PHP d'apache n'est pas installé ou configuré, un fichier PHP sera traité comme un fichier txt: il enverra le source. Mais normalement, le module PHP fonctionne en permanence chez ton provider, notamment parce que les providers en ont eux-mêmes besoin pour gérer leurs propres pages.

Du coup, le piège fatal: faire un include (fichier.inc): le fichier fichier.inc est lisible par défaut...

Donc, la solution que j'ai adoptée:

- faire un fichier php contenant user/login/server comme des variables ou des constantes

- placer ce fichier dans le répertoire include du site

- faire un .htaccess empêchant complètement la lecture du répertoire include

Lien vers le commentaire
Partager sur d’autres sites

c'est interessant, mais cela me pose 2 problemes:

-le "repertoire include", de quoi s'agit il?

dans mon repertoire www, chez OVH, je n'ai jamais vu un tel repertoire!

ensuite, si ce repertoire est protégé par des htaccess, apche empechera a tout utilisatezur non autorisé de consulter ces fichiers.

mais si les cas ou apache laisse voir le code source sont ceux ou apache crashe, les htacces etant gerés par apache,ça revient au meme, non?

Lien vers le commentaire
Partager sur d’autres sites

c'est interessant, mais cela me pose 2 problemes:

-le "repertoire include", de quoi s'agit il?

dans mon repertoire www, chez OVH, je n'ai jamais vu un tel repertoire!

ensuite, si ce repertoire est protégé par des htaccess, apche empechera  a tout utilisatezur non autorisé de consulter ces fichiers.

mais si les cas ou apache laisse voir le code source sont ceux ou apache crashe, les htacces etant gerés par apache,ça revient au meme, non?

C'est normal, puisque ce répertoire c'est toi qui dois le créer ! Dedans tu mets un fichier php avec 3 lignes de code :

<?

$host = "localhost";

$user = "ton username";

$pass = "ton pass";

?>

ensuite tu inclus ce fichier php dans tes scripts qui se connectent à la base sql, et tu remplaces le login et le pass par $user et $pass.

Bien sûr c'est dans ce répertoire là et uniquement celui là que tu mettras un .htaccess, qui empêchera les utilisateurs d'aller voir ce qu'il y a sans empêcher php d'y accéder.

Et quand apache crashe, il ne tourne plus donc plus moyen de voir les contenus des répertoires ou fichiers jusqu'à ce qu'il reparte :yes:

Le seul cas qui pourrait s'avérer dangereux serait le cas où php plante, car à ce moment là les pages ne seraient plus interprétées et donc le code source envoyé comme tel, comme le disait brice.wernet, mais avec la petite astuce au dessus ça évite que quelqu'un choppe le mot de passe.

Et puis php ne tourne pas en permanence, mais juste quand une page est demandée, donc les probabilités pour qu'il plante sont aussi faibles que les probabilités qu'une barette mémoire crame à ce moment là :)

En gros : ne t'inquiète pas :yes::yes::-D

Voilà voilà.

Lien vers le commentaire
Partager sur d’autres sites

-le "repertoire include", de quoi s'agit il?

Normalement, 'est un répertoire dans lequel tu peuxplacer tout fichier nécessaire à plusieurs scripts.

mais si les cas ou apache laisse voir le code source sont ceux ou apache crashe, les htacces etant gerés par apache,ça revient au meme, non?

Non, dans le cas catastophique ou apache plante, personne ne pourra lire tes fichiers du tout, il n'y aura plus de serveur à proprement dit.

C'est dans le cas où PHP ou apache est mal configuré que ça pose problème.

Lien vers le commentaire
Partager sur d’autres sites

merci pour toutes vos infos :)

je me lance dans le MySQL, et je voulsais juste avoir quelques infos sur le sujet :)

bon quoi qu'il en soit, c'est OVH qui a configuré son APACHE/PHP,

donc pas trop de risques :)

par contre : quel est l'interet de mettr ces fichiers dans un repertoire special?

il suffit de faire un htacces qui les bloque, non?

y'a t'il une difference niveau securité, ou c'est simplement cosmetique

(j'ai des fichiers de variables inclus dans mes pages qui trainent sur le root du site web,mais protégés par des htacess, et je vais adopter la solutionj du repertoire include parceque ça fera plus propre)?

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

par exemple, tu veux créer un répertoire prive.

Imagine que tu veuilles un répertoire pour stocker des trucs privés.

Tu commence par créer ton répertoire prive, et tu y ajoute un fichier .htaccess qui contient cette ligne :

deny from all

/! attention : le fichier doit être enregistré au format UNIX (LF au lieux de CR/LF) si ton fichier contient plusieurs lignes.

L'accès au répertoire prive sera donc refusé à tous via le web.

Bon, c'est l'exemple le plus simple, tu peux le configurer pour demander un login/password, etc...

Fais une recherche sur le web, et tu sauras comment faire.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...