Bloquer l'exécution de PHP dans les répertoires accessibles en écriture

Comment empêcher l'exécution de PHP dans les dossiers vulnérables de votre site.

L'un des vecteurs d'attaque les plus répandus est le shell PHP — un script malveillant qu'un attaquant charge sur votre serveur pour modifier des fichiers, lire des données de configuration ou accéder directement à votre base de données.

Le point crucial : les shells ne peuvent être déposés que dans des répertoires accessibles en écriture. Si un dossier n'a pas besoin d'exécuter du PHP — ce qui est le cas de la plupart des dossiers d'upload et de médias — désactivez-le explicitement. Les suspects habituels sont les répertoires tels que /images/, /uploads/, /templates/ et tout autre emplacement où les contenus envoyés par les utilisateurs sont stockés.

Méthode 1 — Serveurs CGI, FastCGI, suPHP ou DSO (Apache)

Créez un fichier .htaccess dans le répertoire où vous souhaitez bloquer l'exécution PHP. S'il en existe déjà un, ajoutez le code suivant en haut du fichier :

<FilesMatch "\.([Pp][Hh][Pp]|[Cc][Gg][Ii]|[Pp][Ll]|[Ph][Hh][Tt][Mm][Ll])\.?.*">
Order allow,deny
Deny from all
</FilesMatch>

Cela bloque l'accès HTTP direct à tous les fichiers PHP (ainsi que CGI/Perl/PHTML) présents dans ce répertoire. Même si un shell est uploadé, il ne pourra pas être exécuté depuis le navigateur.

Nos produits et services

Hébergement webFonctionne sur des disques NVMe ultra-rapides. Convient aux sites de toute complexité.
Commande
VPSInfrastructure cloud flexible avec accès root complet.
Commande
Serveurs dédiésServeurs physiques pour une performance maximale.
Commande

Méthode 2 — Serveurs mod_PHP (DSO — Apache PHP)

Si votre serveur fonctionne en mode mod_PHP et autorise les directives php_flag et php_value dans .htaccess, cette seule ligne suffit :

php_flag engine off

Placez-la dans un fichier .htaccess dans le dossier à protéger. Cela désactive complètement l'interpréteur PHP pour ce répertoire et tous ses sous-répertoires. Tout fichier PHP déposé dans cette arborescence devient inerte — le serveur refusera tout simplement de l'exécuter.

Aide

Une question ou besoin d'un coup de main ? Écrivez-nous via le système de tickets — nous sommes toujours là pour vous aider !

Besoin d’aide?Nos ingénieurs vous aideront gratuitement pour n’importe quelle question en quelques minutesNous contacter