Protégez votre site Joomla! - Part 2 : Interdisez l'exécution de code php dans certains dossiers

Cet article a été originellement posté sur mon blog http://allevents.avonture.be en août 2013.   Le site web d'aeSecure est désormais plus adapté aujourd'hui à ce type de billet.

En Juin, j'ai publié une petite astuce qui permet d'interdire l'accès aux fichiers .xml qui se trouvent dans l'administration de votre site (voir le billet).

Ci-après, une autre petite astuce qui permet d'[seo_keyword interdire l'exécution] de code .php depuis certains dossiers.   L'idée de ce billet m'est venu en lisant l'article "Joomla Hacks - Part I - Phising" (traduction FR).  En quelques mots : si vous avez autorisé l'upload d'images par un utilisateur et/ou si le gestionnaire des médias n'est pas suffisament restrictif, il est possible d'uploader une image dans votre dossier /images ou /stories/images (Joomla 1.5).  

Oui, mais, et si ce qui était uploadé n'était pas une image mais du code ?

C'est là qu'intervient l'astuce : localisez les dossiers dans lesquels vous ne souhaitez jamais autoriser à exécuter du code php; comme p.ex. le dossier /images et installez-y un petit fichier .htaccess qui reprend les quelques lignes ci-dessous.

# Disable PHP Execution in this folder
<Files *.php>
Deny from all
</Files>

Cette protection est mise en place en activant la fonctionnalité 1.2 d'aeSecure

Remarque : un fichier .htaccess se crée avec, p.ex., Notepad++.  Au moment de sauver le fichier, le fichier devra juste être nommé .htaccess (pas de nom; juste l'extension).   Avec votre client FTP, transférez ce fichier dans le dossier à protéger et c'est tout.

Pour vérifier que cela fonctionne, vous pouvez créer un fichier nommé test.php et qui contiendra les quelques lignes suivantes.  Transférer le fichier sur votre site dans, par exemple, le dossier des images. Accéder au fichier via votre navigateur en tapant l'url directe et donc http://votre_site/images/test.php.   En l'absence du fichier .htaccess, le script sera exécuté. Si le fichier .htaccess est présent, le script sera bloqué.

<?php
phpinfo();
?>

Les dossiers dans lesquels vous pouvez copier le fichier .htaccess sont, à priori, les dossiers /cache et /images.   Pour le dossier /tmp, assurez-vous que votre site continue à fonctionner normallement car ce dossier-là est utilisé lors de l'installation / mise-à-jour d'une extension / joomla!.

Back to top