Besoin d'aide ?

Si vous êtes un utilisateur Premium Premium, venez poser votre question dans le forum privé.


1.3 Masquer les erreurs Apache

Avez-vous déjà vu des sites web où des erreurs de ce type s'affichent :

Fatal error: Call to a member function get() on a non-object in /home/XXXXX/public_html/plugins/system/remember/remember.php on line 94
Fatal error: Call to undefined function: stripos() in /home.48/XXXXX/www/modules/mod_gk_news_show/mod_gk_news_show.php on line 35
Fatal error: Class 'JControllerLegacy' not found in /homepages/XXXXX/htdocs/administrator/components/com_cck/cck.php on line 32
Notice: Undefined variable: stepval in /data/XXXX/web/c/3/yoursite.com/htdocs/libraries/joomla/installer/installer.php on line 279
Warning: require_once(components/com_badword/class.badword.php) [function.require-once]: failed to open stream: No such file or directory in /home/XXXX/domains/yoursite.com/public_html/components/com_fireboard/template/default/view.php on line 37

C'est assez ennuyeux à plus d'un titre : cela ne fait pas très sérieux d'une part et, sur le plan strict de la sécurité, c'est assez embêtant car ces messages d'erreurs dévoilent la structure des dossiers de votre site. On découvre quel est la racine de votre site (/home/XXXXX); si le site est à la racine ou dans un sous-dossier, quels sont les dossiers qui existent et le nom d'une page .php qui n'était pas forcément faite pour être dans la lumière (comment se comportera cette page si on tente d'y accéder directement depuis une url, si on force certains paramètres dans le querystring, ...).

Les erreurs Apache doivent, d'une manière générale, être masquées sur un site de production afin de ne pas dévoiler ce type d'informations.

Lorsque les "erreurs" sont des warning ou des notices, il s'agit en réalité d'informations qu'Apache retourne à la destination du développeur, pour lui signaler p.ex. qu'il a oublié de déclarer une variable, qu'il tente de lire un fichier qui n'existe pas, qu'il essaye d'accéder à une position d'un tableau qui dépasse le nombre d'éléments de celui-ci : toutes ces informations-là ne devraient jamais être affichées sur un site de production.

Les seules erreurs qu'il faut parfois activer sur un site de production, ce sont les erreurs fatales (Fatal error) : il s'agit de la fameuse page blanche que vous rencontrez sur des sites php. Une page blanche est synonyme de plantage. Quelque chose à empêcher la page de s'afficher et Apache, selon la configuration du rapport d'erreur n'affiche rien (page blanche) ou affiche le message d'erreur ("Fatal error in file .... on line ...").

La fonctionnalité "1.3 Masquer les erreurs Apache" revient à activer le mode d'erreur error_reporting de PHP pour le mettre une fois sur E_ALL et l'autre fois sur E_NONE. Dans le cas où les erreurs ne sont pas affichées, aeSecure enregistre toutes les erreurs dans un fichier de log : /tmp/error.log.

L'état recommandé pour un site de production est : "Affichage interdit"; ceci afin de ne pas dévoiler les informations sur l'arborescence des fichiers. Dès lors que vous êtes confronté, sur votre site de production, à une page blanche, dans ce cas seulement, activez, temporairement, l'affichage. Ceci le temps de rafraîchir la page blanche; de prendre connaissance de l'erreur fatale qui, cette fois, s'affichera. N'oubliez pas d'interdire à nouveau l'affichage après.

Back to top