Comment interdire l'exécution de scripts PHP dans les répertoires de WordPress ?

Réponses rédigées par Antoine
Dernière mise à jour : 2022-06-21 17:58:34
Thèmes : securite - wordpress
Question

Comment faire pour interdire l'exécution de scripts PHP dans les répertoires de WordPress, et plus particulièrement dans le répertoire wp-content/uploads ?

Réponse

Les répertoires wp-content/uploads et wp-includes de WordPress peuvent contenir des fichiers PHP utilisables pour prendre la main sur votre site Web et l'exploiter.

Pour interdire l'exécution de scripts PHP dans les répertoires de WordPress, vous pouvez modifier le fichier httpd.conf sur Apache et y ajouter la règle suivante ; pensez à adapter le chemin d'accès vers les répertoire à sécuriser :

<Directory "/var/www/vhosts/exemple.com/wp-content/uploads">
  <FilesMatch \.php$>
    Require all denied
  </FilesMatch>
</Directory>

Voici la règle pour le répertoire wp-includes :

<IfModule mod_rewrite.c>
  <Directory "/var/www/vhosts/exemple.com/wp-includes">
    <FilesMatch \.php$>
      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !^/var/www/vhosts/exemple\.com/wp\-includes/js/tinymce/wp\-tinymce\.php$ [NC]
      RewriteRule .* - [NC,F,L]
    </FilesMatch>
  </Directory>
</IfModule>

Si vous utilisez Nginx comme proxy inversé, il faut également ajouter une règle au fichier nginx.conf :

location ~* "^(?:/)wp-content/uploads/.*\.php" { deny all; }

Voici la règle à ajouter pour le répertoire wp-includes :

location ~* "^(?:/)wp-includes/(?!js/tinymce/wp\-tinymce\.php$).*\.php" { deny all; }