Sécuriser une application web développée en php
Protéger un développement PHP contre les attaques passe notamment par l'application de certaines règles de configuration. La mise en œuvre d'une stratégie de programmation défensive est un plus.
En vue de sécuriser un site Web ou une application développée en PHP, certaines règles simples sont applicables lors de l'étape de configuration de l'environnement d'exécution.
Pour modifier les paramètres de PHP, il suffit d'éditer le fichierphp.ini qui se trouve dans /etc/phpX/apache/php.ini en remplaçant le X par 4 ou 5 selon la version de PHP utilisée.
1) Mettre la variable register_globals en off
Quand register_globals est à on, les variables EGPCS (Environnement, GET, POST, Cookie, Server) sont enregistrées comme des variables globales. Ainsi, une URL contenant une variable, par exemple http://www.site.com/index.php?var=test crée une variable $var sans besoin d'autre code. De manière général, il faut éviter au maximum les variables globales et utiliser des flots de données explicites.
2) Limiter l'accès aux répertoires
Le safe mode est le mode de sécurité de PHP. Lorsqu'il est activé, il empêche un script d'accéder à des fichiers situés en dehors du dossier où se trouve le site. La vérification est faite en vérifiant le nom du propriétaire du fichier et celui du script.
Parfois trop restrictive, une vérification sur le nom du groupe peut suffire, en utilisant la directive safe_mod_gid. La variable Open_basedir limite les manipulations aux fichiers situés dans les dossiers spécifiés. Il est également possible de désactiver individuellement des fonctions avecdisable_functions. Disable_classes fonctionne de la même manière et permet de désactiver individuellement des classes.
3) display_error=off et log_errors=on
Désactiver l'affichage des erreurs pour éviter d'afficher des informations aux utilisateurs en mettant la variable display_error en off. Il vaut mieux les inscrire dans un journal d'erreurs avec