Module Apache

Lorsque le PHP est compilé en tant que module Apache , ce module hérite des permissions accordées à l' utilisateur faisant tourner Apache ( par défaut , l'utilisateur "nobody" ) . Par exemple , si vous utilisez PHP pour accéder à une base de données , à moins que la base n' ait un système de droits d'accès interne , vous devrez rendre la base accessible à l'utilisateur "nobody " . Cela signifie qu ' un script mal intentionné peut accéder à la base , la modifier sans authentification . Il est aussi possible qu' un robot accède à la page d 'administration , et détruise toutes les pages . Vous devez aussi protéger vos bases de données avec les autorisations Apache , ou définir votre propre modèle d ' accès avec LDAP , .htaccess , etc.. . et inclure ce code dans tous vos scripts PHP .

Souvent , lorsqu' on a établi les droits de l'utilisateur PHP (ici , l'utilisateur Apache ) pour minimiser les risques , on s 'aperçoit que PHP ne peut plus écrire des virus dans les fichiers des utilisateurs . Ou encore , de modifier une base de données privée . Il est aussi incapable de modifier des fichiers qu ' il devrait pouvoir modifier , ou effectuer certaines transactions .

Une erreur fréquente de sécurité est de donner à l ' utilisateur Apache les droits de superadministrateur .

Donner de telles permissions à l' utilisateur Apache est extrêmement dangereux , et peut compromettre tout le système , telle que l 'utilisation des sudo ou du chroot . Pour les professionnels de la sécurité , une telle utilisation est à exclure d ' office .

Il existe des solutions plus simples . En utilisant open_basedir( ) vous pouvez contrôler et restraindre l 'accès à certains dossiers qui pourront être utilisés par PHP . Vous pouvez aussi des aires de restrictions Apache , pour restraindre les activités anonymes liées aux internautes .