Sécurisation du fichier config.php
Utiliser des variables d'environnement
Une pratique courante pour sécuriser les informations sensibles est de les stocker dans des variables d'environnement. Vous pouvez utiliser ces variables dans votre fichier config.php.
- Définir la variable d'environnement:
- Sous Linux/Mac, ajoutez le token API dans le fichier .env ou dans votre fichier de configuration système (comme .bashrc ou .bash_profile).
export CHARGILY_API_TOKEN="votre_token_secret"
- Sous Linux/Mac, ajoutez le token API dans le fichier .env ou dans votre fichier de configuration système (comme .bashrc ou .bash_profile).
- Récupérer la variable d'environnement dans PHP:
- Utilisez getenv() pour récupérer le token de manière sécurisée dans votre code.
- Modifier le code du fichier de configuration config.php
return [ 'db_host' => getenv('DB_HOST') ?: 'localhost', 'db_name' => getenv('DB_NAME') ?: 'dbname', 'db_user' => getenv('DB_USER') ?: 'user', 'db_pass' => getenv('DB_PASS') ?: 'yourpassword', 'chargily_api_token' => getenv('CHARGILY_API_TOKEN') ?: 'votre_token_secret', .... ];
Ensuite, vous pouvez définir ces variables dans un fichier .env ou directement dans votre environnement serveur.
Note : Si vous utilisez un fichier .env, assurez-vous qu'il est également stocké en dehors du répertoire public et listé dans le .gitignore.
Placer le fichier config.php en dehors du répertoire public
Le fichier config.php contient des informations sensibles (comme les identifiants de base de données et le token API). Pour éviter que ces informations ne soient accessibles publiquement, vous pouvez déplacer le fichier en dehors du répertoire accessible par le web (généralement le répertoire public ou www).
/project_root
/public (accessible au public)
index.php
/config (non accessible au public)
config.php
/log (non accessible au public)
Configurer les permissions du fichier
Assurez-vous que le fichier config.php
est uniquement accessible par l'utilisateur du serveur web : (par exemple www-data sur un serveur Apache)
chmod 600 /path/to/config/config.php
chown www-data:www-data /path/to/config/config.php
Cela empêche les autres utilisateurs d'accéder au fichier, sauf le serveur web.
Utiliser des outils de gestion des secrets
Si vous travaillez sur un projet plus important, vous pouvez utiliser des outils dédiés à la gestion des secrets, tels que Vault (de HashiCorp) ou les Secrets Manager des plateformes cloud comme AWS, Azure, ou Google Cloud.
Ajouter des directives de sécurité dans le fichier .htaccess
Si vous ne pouvez pas déplacer config.php en dehors du répertoire web, vous pouvez ajouter une règle dans votre fichier .htaccess pour empêcher l'accès direct à ce fichier.
<Files "config.php">
Order Allow,Deny
Deny from all
</Files>
Éviter de versionner les informations sensibles
Dans votre fichier .gitignore, ajoutez une règle pour ignorer les fichiers de configuration contenant des informations sensibles (comme config.php ou .env).
/config/config.php
/.env
Chiffrer les informations sensibles (optionnel)
Si vous devez absolument stocker les informations sensibles dans un fichier accessible, envisagez de chiffrer les informations critiques comme le mot de passe et les tokens, puis de les déchiffrer à la volée dans le code.
Conclusion
En suivant ces pratiques, vous protégerez les informations sensibles contenues dans le fichier config.php et réduirez les risques de sécurité. La combinaison de variables d’environnement, de permissions de fichiers, et d’une bonne structure de projet renforce la sécurité du projet.