Sécuriser un site wordpress

  • Protéger le fichier wp-config.php (fichier htaccess)

<Files wp-config.php>
order allow,deny
deny from all
</Files>

  • Protéger le fichier htaccess (fichier htaccess)

<Files .htaccess>
order allow,deny
deny from all
</Files>

  • Interdire le listage des fichiers des répertoires ne contenant pas de fichier d’index (fichier htaccess)

Options All -Indexes

  • Masquer les informations relatives au serveur (fichier htaccess)

ServerSignature Off

  • Empêcher le hotlinking des images (fichier htaccess)

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domaine.tld/.*$ [NC]
RewriteRule .*.(jpe?g|gif|bmp|png)$ http://site_de_redirection.tld/hotlink.gif [R,L]

  • Bloquer le spam des commentaires (fichier htaccess)

<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.domaine.tld.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

  • Masquer l’identification d’un auteur (fichier htaccess)

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* – [F]
</IfModule>

  • Protéger le répertoire /wp-content/uploads/ (fichier htaccess)

<files *.php>
deny from all
</files>

  • Protéger le fichier xmlrpc.php (fichier htaccess)

<Files xmlrpc*="">
order deny,allow
deny from all
</Files>

  • Protéger le dossier wp-includes (fichier htaccess)

RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ – [F,L]
RewriteRule !^wp-includes/ – [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ – [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php – [F,L]
RewriteRule ^wp-includes/theme-compat/ – [F,L]

  • Supprimer le fichier readme.html
  • Désactiver Windows Live Writer

Ajouter la ligne de code suivante au fichier function.php de votre thème:

remove_action('wp_head', 'wlwmanifest_link');

  • Masquer les erreurs de connexion:

add_filter('login_errors',create_function('$a', "return null;"));

  • Masquer la version WP:

Ajouter la ligne de code suivante au fichier function.php de votre thème:

<?php remove_action('wp_head', 'wp_generator'); ?>

  • Bloquer les injections

RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
RewriteRule .* – [F]