Ce travail sur Wordpress a été rendu possible grâce au soutien d'Ikoula.

Après la trêve estivale, il est temps de reprendre ma petite série sur la sécurisation de WordPress. Vous le savez peut-être, WordPress doit être mis à jour régulièrement, donc si vous faites bien les choses, vous devriez avoir la dernière version.

Toutefois, que ce soit avec un WordPress récent ou passé, un attaquant n'a pas à connaitre ce numéro de version, car cela peut lui donner une bonne indication sur les exploits à chercher ou à acheter pour mettre à mal votre site web. On va donc apprendre aujourd'hui à cacher ce numéro de version.

Il faut savoir que le numéro de version d'un WordPress, c'est comme les cafards, ça se fourre partout. Dans votre header, à la fin des appels aux scripts JS/CSS et dans les flux RSS.

screenshot-2016-09-21-14-19-40

La faute au meta tag "generator".

Pour se débarrasser de cette cochonnerie, il suffit d'éditer le fichier functions.php de votre thème et d'y ajouter la fonction suivante :

function remove_version_generator() { return '';}
add_filter('the_generator', 'remove_version_generator');

Mais ça ne suffit pas, car le numéro de version est encore visible dans les appels aux scripts.

Pour les JS/CSS, ne pas mettre de version pose parfois des problèmes avec les caches après les mises à jour (chez certains, la version en cache continue d'être chargée, ce qui peut complètement flinguer la mise en page...).

Pour résoudre le problème, sans pour autant exposer les numéros de version, et au passage en le faisant de manière générale pour tous les JS/CSS (car exposer un numéro de version de plug-in, c'est pas bon non plus pour la sécurité), ajoutez la fonction suivante, toujours dans functions.php.

function removeVersionCallback($matches) {
return "ver=".md5(print_r($matches, true)."");
}
function removeVersion($url) {
return preg_replace_callback("/ver=[^&]*/", removeVersionCallback, $url);
}
add_filter( 'style_loader_src', 'removeVersion');
add_filter( 'script_loader_src', 'removeVersion');"

Autre moyen de connaitre le numéro de version de votre WordPress : Le fichier Readme.html. Pensez bien à la supprimer ou à lui retirer ses droits en lecture (chmod -r readme.html).

Si vous avez un thème ancien ou développé avec les pieds, il est aussi possible, même si c'est rare, que le développeur ait inséré quelque part, une fonction qui permette de voir le numéro de version de WordPress. Pour trouver cette mention et la retirer, lancez une recherche dans le code de votre thème pour y trouver :

get_bloginfo('version');

ou la variable globale

$wp_version

Voilà !

Je pense qu'avec toutes ces armes, aucun numéro de version n'est prêt à montrer le bout de son nez sur votre site web.

Dans la série, Sécuriser WordPress: