Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 18/01/2012, 18h13   #1
Membre régulier
 
Inscription : août 2002
Messages : 226
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 226
Points : 80
Points : 80
Par défaut Comment protéger les identifiants de connexion à la base de données

Bonjour à toutes et à tous !

Avant tout, j'ai un peu hésité pour le choix du forum dans lequel poster ma question (Php ? Php/MySQL ? Apache ?). Si parfois, l'endroit n'est pas approprié pour ma question, d'avance merci à l'équipe de modération de me dire où poster ma question

Bref.

Je suis en train de développer un site web en php avec mysql. J'ai structuré mon code en plusieurs fichiers répartis dans plusieurs dossiers.

Mon problème concerne un fichier db_co.php déposé dans un dossier. Ce fichier contient les constantes (database name, host name, server name, driver name, ...) permettant de créer la chaîne de connexion à ma base de données.

La question que je me pose est de savoir quelles sont les meilleures pratiques pour sécuriser l'accès à ce fichier / dossier pour éviter que les identifiants de connexion à la base de données soient dérobés (le tout dans un contexte Php / MySQL / Apache) ?

Ce que j'ai testé c'est de protéger l'accès au dossier par un mot de passe mais le problème que je rencontre c'est au niveau de l'include de db_co.php, une popup s'affiche et me demande l'identifiant et mot de passe (d'ailleurs, si je fais annuler, ma page s'affiche quand même).

Ce que je pense faire et j'aimerai savoir votre avis, c'est de n'autoriser l'accès à db_co.php uniquement pour les utilisateurs qui proviennent d'un certain domaine (le domaine de mon site) ... je pense que ça serait une bonne solution mais je ne sais pas s'il n'y a pas quelque chose que j'oublie.

D'avance merci pour votre aide.
Yellowmat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 17h53   #2
Invité régulier
 
Inscription : septembre 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 31
Points : 8
Points : 8
Salut,

Il faut que tu créer un .htaccess du genre a la base de ton dossier avec par exemple :

Code :
1
2
3
4
5
6
7
8
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName AccesRestreint
AuthType Basic
 
order deny,allow
deny from all
allow from tonnomdedomaine.fr
Epliknot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 09h57   #3
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Logiquement si dans ton fichier, tu as des commandes php qui valorisent des variables avec les identifiants de ta base, ils ne pourront pas être visibles par l'utilisateur final.

Tant que dans ce fichier tu n'affiches pas ces valeurs il n'y a pas de risque.
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 10h19   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
Vu que ton fichier db_co.php est bien en PHP, tenter d'y accéder par apache ne devrait rien produire à l'affichage (à moins que tu n'aies eu la bêtise de faire des echo cela va sans dire ).

Tu peux ajouter une double sécurité pour protéger le répertoire ou tu as mis tes scripts de configuration. Supposons que toute la conf soit isolée dans un répertoire config, pour le sécuriser il suffit de mettre un .htaccess à la racine et d'y mentionner:
Code :
1
2
3
4
5
6
7
8
9
10
11
<Directory config>
  ; Ne pas donne accès
  Order Deny, Allow
  Deny from All
 
  ; Ne pas lister les fichiers
  Options -Indexes
 
  ; Ne pas écraser ces deux règles
  AllowOverride None
</Directory>
Si quelqu'un tente d'y accéder, il mangera une erreur 403. C'est important car si quelqu'un débranche le mod PHP d'Apache, les fichiers PHP seront vus en clair (non interprétés).
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 13h42   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 727
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 727
Points : 3 294
Points : 3 294
Salut

Je rajouerais un point qui n'a pas été évoqué, c'est de ne pas placer un fichier plus ou moins confidentiel (comme stocker un mot de passe) dans la partie "publique" du site Web, c'est à dire là où ce trouve le virtualhost.
En général c'est www ou htdoc ou encore public, etc ...

Même si c'est un fichier Php et qu'il n'y a pas de echo, il persiste quand même un risque qu'un hacker plus malin que les autres puisse obtenir le contenu brut (en texte) du fichier, et du coup du mot de passe en clair.

Placer le fichier de config en dehors du virtualhost, comme :
/home/user/www/ (virtualhost défini ici)
/home/user/config/config.php (mot de passe dans ce fichier)


Même s'il est placé en-dehors, ça n'exclus pas de créer un .htaccess comme cela a été dit dans le post précédent.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h50.


 
 
 
 
Partenaires

Hébergement Web