Ceci est une ancienne révision du document !
Sécurisez votre PHP
PHP est très souvent installé sur un serveur web car c'est un langage de programmation très couramment utilisé. PHP, comme tout langage de scripts, comporte des failles de sécurités intentionnelles ou non. Ces vulnérabilités s'expliquent par de mauvaises habitudes de programmation (souvent un défaut de validation des entrées) ou par des erreurs dans le fichier de configuration php.ini.
Fonctionne pour toute version de PHP
Interdire des fonctions
Certaines fonctions de PHP peuvent directement lancer des scripts à distance qui peuvent être malveillant. Il est donc judicieux, surtout si vous ne les utilisez pas, d'interdire l'utilisation de certaines fonctions de PHP. Pour cela, nous allons modifier ou rajouter cette ligne dans le fichier de configuration php.ini. Le fichier de configuration se trouve en général à : /etc/php5/apache2/php.ini .
disable_functions = exec,passthru,popen,proc_open,shell_exec,system
Si vous avez aussi installé le paquet php5-cli pour lancer des scripts PHP directement en ligne de commande, il existe un deuxième fichier de configuration : /etc/php5/cli/php.ini
Puis relancer le service apache avec la commande suivante :
/etc/init.d/apache2/restart
Vérification des paramètres par défaut
Par mesure de sécurité, il vaut mieux vérifier les paramètres suivants.
safe_mode = Off safe_mode_gid = Off memory_limit = -1 display_errors = Off display_startup_errors = Off register_globals = Off magic_quotes_gpc = Off magic_quotes_runtime = Off allow_url_fopen = Off allow_url_include = Off
Pour le paramètre memory_limit si votre machine possède une mémoire limitée mieux vaut mettre la valeur à 128MB (valeur par défaut). Pour le paramètre allow_url_fopen, si vous devez utiliser la fonction fopen dans vos scripts, mettre cette valeur à ON