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 "noboby"). Par exemple, si vous utilisez PHP pour accéder à une base de données à moins que la base n'ai un système de droits d'accès interne, vous devrez rendre la base accessible à l'utilisateur "nobody". Cela signifie qu'un script malintentionné 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 ainsi 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 include ce code dans tous vos scripts PHP.

Souvent, lorsqu'on a établit les droits pour que 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, tell que l'utilisation des sudo ou du chroot. Une telle utilisation est à exclure pour les profesionnels de la sécurité.