Une fois les plugins de sécurité installés, il peut parfois subsister certains indices ci et là qui peuvent fournir des informations supplémentaires sur votre installation WordPress.
Bien entendu, c’est informations ne sont pas des failles en elles-mêmes, mais il peut être intéressant de les cacher.

Voici donc quelques hooks – c’est morceaux de code qui vous donnent accès à la modification de portions de fonctions WordPress – afin de modifier certaines actions, sans toucher au cœur du gestionnaire de contenu. Cela vous permettra de bénéficier des mises à jour de WordPress sans aucun problème.
La plupart de ces codes sont à placer dans le fichier functions.php de votre thème WordPress.

Supprimer le message d’erreur à la connexion

Lorsque vous vous connectez à l’interface d’administration de WordPress et que vous commettez une erreur, un message d’information apparait.
Celui-ci est suffisamment explicite pour vous dire que votre mot de passe n’est pas le bon, ce qui signifie que votre login est bon, ou inversement. (vous me suivez ? :p)
Bref, pour supprimer cette information bien inutile – ou du moins trop utile à la mauvaise intention, et pas suffisamment à la bonne – il vous suffit d’utiliser ce code.

if ( !function_exists("remove_login_error_messages")) {
    function remove_login_error_messages($val){
        $val = __('Same player plays again');
		return $val;
    }
}
add_filter('login_errors','remove_login_error_messages');

Si vous souhaitez retirer complètement le message (et ça semble conseillé), retirez la troisième ligne et remplacez return $val; par return null;.

Supprimer la version de WordPress

WordPress, grâce à la fonction wp_head() présente dans votre thème, affiche la meta suivante : <meta name="generator" value="WordPress x.x.x"/>
Dans le fichier functions.php de votre thème WordPress, ajoutez ce code pour supprimer cette meta inutile :

remove_action('wp_head', 'wp_generator');

Le plugin WP Security Scan se propose de le faire pour vous, si vous n’êtes pas très code. (peut-être l’avez-vous déjà installé)

Il est également possible de retirer cette information du flux RSS :

if (!function_exists('juiz_no_generator')){
	function juiz_no_generator() { return ''; }
}
add_filter('the_generator', 'juiz_no_generator');

En plus de cette meta, le numéro de version de WordPress, mais aussi des plugins installés sont affichés en bout de chemin des fichiers CSS et JS sous cette forme : style.css?ver=3.3.1
C’est également une information qui peut être retirée en entrant ce code dans le fichier functions.php :

if( !function_exists("delete_script_version")) {
    function delete_script_version( $src ){
        $parts = explode( '?', $src );
        return $parts[0];
    }
}
add_filter( 'script_loader_src', 'delete_script_version', 15, 1 );
add_filter( 'style_loader_src', 'delete_script_version', 15, 1 );

Source

Désactiver les éditeurs de thèmes et plugins

WordPress offre la possibilité par défaut d’éditer les fichiers des thèmes et plugins depuis l’interface d’administration.
Je n’ai jamais encore trouvé l’intérêt de ces éditeurs, et leur activation par défaut est un risque si certains utilisateurs non prévenus viennent y mettre les pieds.
Désactivez simplement cette fonction grâce à ce morceau de code à placer dans le fichier wp-config.php se trouvant à la racine de votre installation WordPress&nsbp;:

define( 'DISALLOW_FILE_EDIT', true );

C’est tout.
Merci à alex pour la suggestion.
Source

Créer un plugin pour bloquer les requêtes suspectes

Les injections SQL peuvent se faire en exploitant une faille dans un formulaire, que la méthode soit en POST ou en GET, ou directement dans une URL.
Aussi, pour prévenir ces injections, il est possible de filtrer la requête en recherchant des mots clefs extraits de requêtes SQL.
Nous allons créer un plugin. Pour ce faire, rendez-vous dans le dossier wp-content/plugins/ et créer le nouveau dossier « blockbadqueries » dans lequel vous glisserez le fichier blockbadqueries.php dont voici le contenu :

<?php
/*
Plugin Name: Block Some Bad Queries
Plugin URI: https://www.creativejuiz.fr/blog/wordpress/dossier-ameliorer-securite-wordpress-hooks
Description: Protect WordPress Against some malicious URL requests
Author URI: https://geoffreycrofte.com
Author: Geoffrey Crofte
Version: 1.0.0
Original old version from: http://perishablepress.com/
*/

global $user_ID;

if($user_ID) {
	if(!current_user_can('level_10')) {
		if (strlen($_SERVER['REQUEST_URI']) > 255) {
			@header("HTTP/1.1 414 Request-URI Too Long");
			@header("Status: 414 Request-URI Too Long");
			@header("Connection: Close");
			@exit;
		}
	}
}

if (strpos($_SERVER['REQUEST_URI'], "eval(") ||
strpos($_SERVER['REQUEST_URI'], "CONCAT") ||
strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
strpos($_SERVER['REQUEST_URI'], "base64")) {
	@header("HTTP/1.1 414 Request-URI Too Long");
	@header("Status: 414 Request-URI Too Long");
	@header("Connection: Close");
	@exit;
}
?>

Activez le plugin depuis l’interface de WordPress et le tour et joué.
Ce script vérifie le contenu de la requête, et s’il trouve quelque chose de suspect renvoie une erreur 414 (URL trop longue).

Pour ceux qui auraient davantage d’affinité avec .htaccess, je vous invite à lire la suite qui comporte également une solution alternative (complémentaire ?) à ce plugin. Cette solution a également été proposée par Perishable Press.