web-dev-qa-db-fra.com

Est-il sûr de stocker le mot de passe de la base de données dans un fichier PHP?

Mon fichier connection.php Stocke les informations d'identification pour se connecter à la base de données:

<?php 
    $objConnect = mysql_connect("localhost","username","password"); 
    mysql_select_db("selectDB", $objConnect);
?>

Lorsqu'une page doit connecter la base de données, j'utilise simplement <?php include("connection.php"); ?>.

Est-ce sûr? Les pirates peuvent-ils voler mes informations d'identification dans ce fichier?

32
OammieR

Ma recommandation: Ne stockez pas les mots de passe dans le code source.

Au lieu de cela, stockez-les dans un fichier de configuration (en dehors de la racine Web) et assurez-vous que le fichier de configuration n'est pas accessible au public. La raison en est que vous ne voulez normalement pas conserver vos mots de passe enregistrés dans le référentiel de code source ou exposés à tous ceux qui peuvent afficher des fichiers dans votre racine Web.

Il y a un risque supplémentaire avec le stockage des mots de passe dans un .php fichier dans votre racine Web, ce qui est un peu obscur mais peut être facilement évité en plaçant le fichier en dehors de votre racine Web. Considérez: si vous modifiez connection.php à l'aide d'un éditeur de texte, et votre connexion s'interrompt pendant que vous le modifiez, votre éditeur enregistrera automatiquement une copie du connection.php fichier dans un fichier de sauvegarde: par exemple, connection.php~ (dans le même répertoire). Maintenant, le fichier de sauvegarde a une extension différente, donc si quelqu'un essaie de récupérer ce fichier, le serveur Apache servira avec plaisir une copie du fichier en texte clair, révélant le mot de passe de votre base de données. Voir 1% des sites propulsés par CMS exposent leurs mots de passe de base de données pour plus de détails.

Voir aussi Comment les projets open source gèrent-ils les artefacts sécurisés? , Open Source et comment cela fonctionne pour les projets sécurisés?

35
D.W.

C'est assez sûr. Pour obtenir le contenu du fichier php, un pirate informatique doit compromettre votre serveur, ou vous devez le mal configurer.

Je recommande néanmoins de configurer mysql afin que l'utilisateur utilisé par le script ne soit pas accessible à distance et d'utiliser un autre utilisateur pour l'accès administratif à distance.

11
CodesInChaos

Le problème vient si vous avez un script PHP qui télécharge éventuellement les fichiers sur votre serveur, par exemple download.php?=index.php.

Si vous consultez Google, vous verrez que cette vulnérabilité existe dans de nombreux autres sites.

5
Victor Casé