
Améliorer la sécurité de son site web avec quelques extensions, codes, plugins et des réflexes.
Tutoriel pour augmenter la sécurité informatique de son site web ou blog sous WordPress en général et guide pour lutter contre le spam (pourriel).
A lire d’abord ce préambule indispensable : Sécurité informatique et Lutte anti-spam.
Sommaire :
- Toujours effectuer les mises à jour
- Sécuriser son PC pour sécuriser son WordPress
- Encrypter cookies d’authentification
- Installer un Captcha
- Activer Askimet
- Plugins WordPress Antispams
- Blacklister liens Nofollow en liste noire
- Configurer un .htacces en béton
- Protéger dossiers, admin, wp-config, wp-login, htaccess
- Connexion sécurisée SSL et htpasswd
- Exclure requêtes externes sur commentaires
- Bannir pourriels en masse par IP
- Requête SQL afficher liste IP spammeurs
- Interdire domaine spammeurs
- Bloquer robots spams
- Interdire vol de contenu RSS
- Interdire affichage vol images
- Cacher votre Email aux robots (nouveau, update)
- Interdire indexation dossiers vulnérables
- Modifier le préfixe wp par défaut (nouveau, update)
- Autres ressources
- Victime ? Votre blog est infecté ? Extensions Firefox utiles (nouveau, update)
- Modération des commentaires
1. TENEZ VOTRE WORDPRESS A JOUR
Les mises à jour corrigent les failles de sécurité. Un message vous en avertit dans le tableau de bord. Pour mettre à jour il suffit de suivre les liens de mises à jour proposés. Les plugins et thèmes aussi doivent être updatés.
2. SÉCURISEZ VOTRE PC POUR SÉCURISER VOTRE SITE WEB OU BLOG WORDPRESS 
UTILISEZ DES MOTS DE PASSE TRÈS FORTS !
Si vos gestes généraux de lutte antispam et de sécurité informatique sont corrects vous réduirez déjà drastiquement le nombre de vos spams, y compris ceux qui empestent vos blogs. J’ai déjà expliqué toute l’importance de bons mots de passe, du choix du webmail et gestes réflexes à avoir. On peut lutter autant que l’on veut sur son blog, si votre messagerie et/ou le serveur de votre adresse email ne suivent pas dans la lutte sécuritaire, vous perdez temps et énergie en vain. Donc lisez aussi mes explications précédentes. Certains d’entre-vous n’imaginent pas le lien entre mauvais gestes généraux sur un PC et courrier indésirables dans leur blogs. Ensuite, puisque les techniques des spammeurs (humains ou robots) sont multiples, il convient de combiner les solutions de combat.
Dans la catégorie mots de passe, pour ceux qui ne veulent pas toucher à une ligne de code, vous pouvez utiliser un plugin pour ajouter un niveau de protection à votre mot de passe d’administrateur : Plugin AskApache Password Protect
3. ENCRYPTEZ LES COOKIES DE VOS CLEFS D’AUTHENTIFICATION 
Simple à faire. Ouvrez votre fichier wp-config.php. Vous y trouverez des lignes prévues pour ça sous le titre Clefs uniques d’authentification et salage. Ainsi que le lien pour générer ces clés (qui change avec les versions WP successives).
Il suffit de visiter ce lien : générer des clefs
Insérez ces clés, sauvegardez, actualisez les dossiers de votre logiciel FTP, et chargez le fichier en ligne.
(A noter que l’adresse de ce lien commence par https (remarquez le ‘s’), qui traduit bien une connexion sécurisée par SSL).
4. METTRE UN CAPTCHA POUR VOS COMMENTAIRES 
Une technique appréciable est d’installer un capcha pour les commentaires.
Choisissez un plugin :
- Conditional CAPTCHA for WordPress (captcha chiffres et question)
- ReCaptcha (captcha chiffres)
- Spam Stopper (captcha définie par vous)
- Math Comment Spam Protection (captcha mathématique)

La captcha, ça marche. 57 pourriels évités en quelques heures
5. NE FAITES PAS L’IMPASSE DU PLUGIN ASKIMET
Livré par défaut avec WordPress, activez-le. On vous demandera une clé d’activation pour ce faire, il suffit d’ouvrir un compte (et non un blog, juste un login) chez wordpress.com et de copier coller la api key livrée dans votre profil.
6. PLUGINS WORDPRESS ANTISPAM 
Certaines de ces extensions sont très efficaces. Si vous êtes plus à l’aise avec le fait d’installer un plugin plutôt que configurer le fichier .htaccess comme je vais vous le proposer plus loin, voici une petite liste par efficacité décroissante :
- Antispam Bee (efficace, simple et anonyme)
- Invisible Defender (pareil)
- Bad Behaviour (son intérêt est qu’il arrête le spam avant, mais il ne bloque pas tout)
- Block Bad Queries (pas si facile à configurer mais puissant)
- http:BL WordPress
- Simple Trackback Validation (Stopper le spam sur les rétroliens)
7. BLACKLISTER LES LIENS EN NOFOLLOW 
Puisque depuis 2005 Google, YAHOO et MSN ne crawlent plus les liens en nofollow, une partie des robots ne viendra plus par chez vous. Ce point est discuté mais pour ma part j’ai constaté une nette amélioration depuis.
Dans l’onglet Réglages de votre tableau de bord, allez dans Discussions. Deux grands champs vides attendent que vous les remplissiez. Dans le premier champ vide intitulé liste de modération des commentaires, ajoutez au fur et à mesure des mots clés à bloquer. Mais surtout, dans le 2e champ vide intitulé Liste noire pour les commentaires, filtrez logique en ajoutant :
[url= [link= rel="nofollow"
Alternative via le plugin Nofollow Free
8. CONFIGURER UN HTACCESS EN BÉTON 
Les codes suivants sont à ajouter dans le fichier .htaccess. Sauvegardez TOUJOURS votre fichier .htaccess avant de le modifier. Ajoutez une seul code à la fois afin de vérifier les erreurs ou plantages éventuels. Certaines commandes ne fonctionneront pas avec votre site car les paramètres varient trop d’un hébergeur à l’autre.
9. Codes pour PROTÉGER DOSSIERS, WP-CONFIG, HTACCESS, WP-LOGIN, ADMINISTRATION, TRACKBACK SPAM 
Protéger le fichier WP-CONFIG :
#Protection of wp-config.php <files wp-config.php> Order deny,allow deny from all </files>
Protéger le fichier WP-LOGIN
Certains suggèrent de protéger la connexion au blog (wp-login.php). Cette opération n’est possible que si vous êtes le seul administrateur ET que vous possédez une IP fixe. Ce qui est rare. Donc si vous êtes en voyage, vous n’aurez pas accès à votre blog.
<Files Wp-login.php> Order deny, allow Deny from All Allow from **.***.***.** </ Files>
En revanche vous pouvez empêcher l’accès administration pour un IP spécifique :
Protéger l’administration
# Restrict access WP-Admin login on a specific IP address AuthUserFile / dev / null AuthGroupFile / dev / null AuthName “Access Control” AuthType Basic order deny, allow deny from all # Your IP address allow from **.***.***.**
Pour ajouter des IP à bloquer, remplacez les caractères **.***.***.** par le nouvel IP, séparé par une virgule (,).
Interdire l’accès à votre htaccess
# htaccess protection <Files ~ "^.*.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </Files>
Renommez votre fichier .htaccess
Par exemple renommez en fichieracces, puis insérez ce nouveau nom :
# rename htaccess fichieracces ht.access
Empêcher l’internaute de voir le contenu de vos répertoires
Tous les blogs WP non sécurisés ni optimisés ont la même structure. Aussi tout utilisateur sait qu’il peut voir vos images en vrac (dossier wp-content/uploads), les plugins (dossier wp-content/plugins), les thèmes WP et tout contenu de dossier.
# Protect Directory browsing Options All-Indexes
Si vous ne faites pas ça, au moins chargez un fichier vide index.html ou index.php dans tous les dossiers que vous ne voulez pas voir listés (thèmes, plugins, images uploads…).
Interdire les trackbacks visiblement non humains et spammeurs
# Deny Obvious Trackback Spams RewriteCond %{REQUEST_METHOD} =POST RewriteCond %{HTTP_USER_AGENT} ^.*(opera|mozilla|firefox|msie|safari).*$ [NC] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.+/trackback/? HTTP/ [NC] RewriteRule .* - [F,NS,L]
10. PROTEGER VOS PAGES WP-ADMIN ET LOGINS AVEC HTPASSWD OU SSL 
A) Mettez en place un fichier htpasswd
En deux étapes. Vous devez créer un fichier .htpasswd qui contient un mot de passe crypté. Puis renseignez le code généré dans le htaccess. Plus de détail et pour crypter le mot de passe, cherchez sur Google ou voir chez Infowebmaster Tutorial pour sécuriser un dossier.
B)Forcez une connexion sécurisée (SSL)
Pour l’administration. Attention, n’essayez pas ça sur un hébergeur gratuit ou votre blog va planter. Il faut également que votre hébergeur accepte le SSL (voir les options de votre plan d’hébergement). Si oui, il suffit d’insérer dans wp-config.php :
<?php define('FORCE_SSL_ADMIN', true); ?/>
Ou utilisez le plugin Admin SSL .
Ceci donnera le choix à vos membres et vous-même entre rapidité et plus grande sécurité (toujours ce https). Fonction sensible, pas vraiment utile pour des blogs généraux. Plutôt pour des utilisations spécifiques aux entreprises et aux boutiques de commerce ou une plateforme multisites.
C) VÉRIFIEZ LES PERMISSIONS CHMOD SUR VOS DOSSIERS ET FICHIERS EN FTP
Restons simple. Tous vos dossiers doivent être en 755, les fichiers en 644.
11. EXCLURE LES REQUÊTES ÉTRANGÈRES 
Si la xénophobie est à proscrire pour l’être humain, en matière de requêtes Web elle est recommandée. En gros vous allez spécifier que la machine sans Referer et sans agent soit bannie pour poster un commentaire (une requête qui ne part de votre blog, ce qui est la cas des campagnes de spams.
Indiquez le nom de votre base de données et votre nom de domaine dans le code suivant :
RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post.php* RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
Attention : Si comme moi vous avez modifié le préfixe de vos tables WP (le fameux wp_ dans votre wp-config.php), il convient de l’exprimer dans le code. Par exemple vous avez changé wp_ pour blogdejules_ . Vous devrez indiquer (3e ligne) blogdejules-comments-post. Ne confondez pas préfixe des tables WP et base de données…
#Exclure les requêtes sans référence RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .nom-du-prefixe-de-votre-table-wordpress-comments-post.php* RewriteCond %{HTTP_REFERER} !.*votre-nom-de-domaine-ici.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
Vous pouvez aussi bannir toute tentative de POST qui ne passe pas via votre fichier de commentaires WP-comments-post.php…
#Only reach a real WP-comments-post.php RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.*/wp-comments-post.php.* HTTP/ [NC] RewriteRule .* - [F,NS,L]
12. BANNIR PAR IP 
Pour ma part je trouve la manœuvre délicate étant donné que les IP changent. Si vous n’êtes pas certain de ce que vous faites, vous bloquerez des innocents, voire vos visiteurs habituels. Il suffit d’ajouter cette ligne :
Deny from 123.456.789
Mais globalement on peut utiliser une solution de liste contrôlée en bloquant par filtres une liste anti agents spammeurs vérifiée. L’intérêt est que vous pouvez agrandir cette liste vous-même avec le temps (une ou deux fois par an suffit, je ne parle pas d’ajouts réguliers).
Source : Perishable Press
- 2010 User-Agent Blacklist
- 2010 IP Blacklist
- 4G Series: The Ultimate User-Agent Blacklist, Featuring Over 1200 Bad Bots
- 4G Series: The Ultimate Referrer Blacklist, Featuring Over 8000 Banned Referrers
13. Interdire par domaines de spammeurs 
# Ultimate htaccess Blacklist 2 from Perishable Press # Deny domain access to spammers and other scumbags RewriteEngine on RewriteBase / RewriteCond %{HTTP_USER_AGENT} ADSARobot|ah-ha|almaden|aktuelles|Anarchie|amzn_assoc|ASPSeek|ASSORT|ATHENS|Atomz|attach|attache|autoemailspider|BackWeb|Bandit|BatchFTP|bdfetch|big.brother|BlackWidow|bmclient|Boston Project|BravoBrian SpiderEngine MarcoPolo|Bot mailto:craftbot@yahoo.com|Buddy|Bullseye|bumblebee|capture|CherryPicker|ChinaClaw|CICC|clipping|Collector|Copier|Crescent|Crescent Internet ToolPak|Custo|cyberalert|DA$|Deweb|diagem|Digger|Digimarc|DIIbot|DISCo|DISCo Pump|DISCoFinder|Download Demon|Download Wonder|Downloader|Drip|DSurf15a|DTS.Agent|EasyDL|eCatch|ecollector|efp@gmx.net|Email Extractor|EirGrabber|email|EmailCollector|EmailSiphon|EmailWolf|Express WebPictures|ExtractorPro|EyeNetIE|FavOrg|fastlwspider|Favorites Sweeper|Fetch|FEZhead|FileHound|FlashGet WebWasher|FlickBot|fluffy|FrontPage|GalaxyBot|Generic|Getleft|GetRight|GetSmart|GetWeb!|GetWebPage|gigabaz|Girafabot|Go!Zilla|Go!Zilla|Go-Ahead-Got-It|GornKer|gotit|Grabber|GrabNet|Grafula|Green Research|grub-client|Harvest|hhjhj@yahoo|hloader|HMView|HomePageSearch|http generic|HTTrack|httpdown|httrack|ia_archiver|IBM_Planetwide|Image Stripper|Image Sucker|imagefetch|IncyWincy|Indy*Library|Indy Library|informant|Ingelin|InterGET|Internet Ninja|InternetLinkagent|Internet Ninja|InternetSeer.com|Iria|Irvine|JBH*agent|JetCar|JOC|JOC Web Spider|JustView|KWebGet|Lachesis|larbin|LeechFTP|LexiBot|lftp|libwww|likse|Link|Link*Sleuth|LINKS ARoMATIZED|LinkWalker|LWP|lwp-trivial|Mag-Net|Magnet|Mac Finder|Mag-Net|Mass Downloader|MCspider|Memo|Microsoft.URL|MIDown tool|Mirror|Missigua Locator|Mister PiX|MMMtoCrawl/UrlDispatcherLLL|^Mozilla$|Mozilla.*Indy|Mozilla.*NEWT|Mozilla*MSIECrawler|MS FrontPage*|MSFrontPage|MSIECrawler|MSProxy|multithreaddb|nationaldirectory|Navroad|NearSite|NetAnts|NetCarta|NetMechanic|netprospector|NetResearchServer|NetSpider|Net Vampire|NetZIP|NetZip Downloader|NetZippy|NEWT|NICErsPRO|Ninja|NPBot|Octopus|Offline Explorer|Offline Navigator|OpaL|Openfind|OpenTextSiteCrawler|OrangeBot|PageGrabber|Papa Foto|PackRat|pavuk|pcBrowser|PersonaPilot|Ping|PingALink|Pockey|Proxy|psbot|PSurf|puf|Pump|PushSite|QRVA|RealDownload|Reaper|Recorder|ReGet|replacer|RepoMonkey|Robozilla|Rover|RPT-HTTPClient|Rsync|Scooter|SearchExpress|searchhippo|searchterms.it|Second Street Research|Seeker|Shai|Siphon|sitecheck|sitecheck.internetseer.com|SiteSnagger|SlySearch|SmartDownload|snagger|Snake|SpaceBison|Spegla|SpiderBot|sproose|SqWorm|Stripper|Sucker|SuperBot|SuperHTTP|Surfbot|SurfWalker|Szukacz|tAkeOut|tarspider|Teleport Pro|Templeton|TrueRobot|TV33_Mercator|UIowaCrawler|UtilMind|URLSpiderPro|URL_Spider_Pro|Vacuum|vagabondo|vayala|visibilitygap|VoidEYE|vspider|Web Downloader|w3mir|Web Data Extractor|Web Image Collector|Web Sucker|Wweb|WebAuto|WebBandit|web.by.mail|Webclipping|webcollage|webcollector|WebCopier|webcraft@bea|webdevil|webdownloader|Webdup|WebEMailExtrac|WebFetch|WebGo IS|WebHook|Webinator|WebLeacher|WEBMASTERS|WebMiner|WebMirror|webmole|WebReaper|WebSauger|Website|Website eXtractor|Website Quester|WebSnake|Webster|WebStripper|websucker|webvac|webwalk|webweasel|WebWhacker|WebZIP|Wget|Whacker|whizbang|WhosTalking|Widow|WISEbot|WWWOFFLE|x-Tractor|^Xaldon WebSpider|WUMPUS|Xenu|XGET|Zeus.*Webster|Zeus [NC] RewriteRule ^.* - [F,L]
14. REQUÊTE SQL POUR OBTENIR UNE LISTE DES SPAMMEURS 
Pour ajouter des IP à cette liste vous devez connaître les IP fautives. une requête SQL dans votre base de données vous les révèlera :
SELECT count( * ) AS cnt, `comment_author_IP` as cmnt_ip FROM ` ».$table_prefix. »comments` WHERE 1 GROUP BY cmnt_ip ORDER BY `cnt` DESC, `cmnt_ip` DESC « ;
Evidemment, ceci à condition que vous ne les ayez pas déjà effacés. Vous pouvez bien sûr aussi les copier-coller directement dans la liste de vos commentaires indésirables.
15. BLOQUER LES ROBOTS SPAMMEURS 
#Bloquer robots de spams SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot SetEnvIfNoCase User-Agent "^ExtractorPro" bad_bot SetEnvIfNoCase User-Agent "^CherryPicker" bad_bot SetEnvIfNoCase User-Agent "^NICErsPRO" bad_bot SetEnvIfNoCase User-Agent "^Teleport" bad_bot SetEnvIfNoCase User-Agent "^EmailCollector" bad_bot SetEnvIfNoCase User-Agent "^174.129.88.35" bad_bot Order Allow,Deny Allow from all Deny from env=bad_bot SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT Deny from env=HTTP_SAFE_BADBOT SetEnvIfNoCase Via evil-spam-proxy spammer=yes SetEnvIfNoCase Referer evil-spam-domain.com spammer=yes SetEnvIfNoCase Referer evil-spam-keyword spammer=yes SetEnvIfNoCase Via pinappleproxy spammer=yes SetEnvIfNoCase Referer doobu.com spammer=yes SetEnvIfNoCase Referer poker spammer=yes SetEnvIfNoCase Referer pharmacylegal.info spammer=yes SetEnvIfNoCase Referer 174.129.88.35 spammer=yes deny from env=spammer
16. INTERDIRE LE VOL DE VOS CONTENUS DE VOS FILS RSS 
Source : IP Delivery to Stop RSS Content Thieves
Seo Black Hat nous explique qu’il suffit de repérer l’adresse IP du voleur. Ensuite d’indiquer le flux que vous voulez voir s’afficher à la place du vôtre. Dans son cas il a simplement eu l’excellente idée d’indiquer le flux de son voleur, ce qui lui crée une boucle problématique tout en laissant votre blog désormais tranquille.
RewriteEngine on RewriteCond %{REMOTE_ADDR} ^69.16.226.12 RewriteRule ^(.*)$ http://newfeedurl.com/feed
(Modifiez newfeedurl.com/feed par l’adresse du sans-gêne, modifiez 69.16.226.12 par l’IP adéquate).
Pour trouver l’adresse IP à bloquer, si vous êtes en Windows regardez votre écran en bas à gauche allez dans le menu Démarrer, trouvez l’onglet Executer et collez ping nom-de-domaine-du-site.ltd. Exemple pour mon site tapez : ping lashon.fr
Ou encore utilisez un Traceroute. Ou avec l’extension Firefox ShowIP.
Mais, comme l’écrit Jeff Star de Perishable Press dans How to Deal with Content Scrapers , si ce ‘vol’ de contenu est fait sur un gros site très fréquenté, vaut mieux laisser faire puisque cela amène instantanément des centaines de backlinks, à condition que vos flux contiennent beaucoup de liens internes vers votre blog…
17. INTERDIRE L’AFFICHAGE DE VOS IMAGES AILLEURS 

Un bout de code dans htaccess et vos images ne seront pas affichables via vos liens.
Le Hotlinking consiste en la très mauvaise habitude de coller l’adresse d’une image vue ailleurs pour l’afficher sur son blog, ce qui vole non seulement l’image mais aussi un peu de votre bande passante.
Voici le bout de code pour le contrôler. Choisissez une image de substitution qui s’affichera en lieu et place et uploadez-la à la racine de votre blog. N’oubliez pas d’indiquer votre nom de domaine à vous dans ces lignes:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?votre-nom-de-domain.com/.*$ [NC] #RewriteRule .(gif|jpg)$ - [F] RewriteRule .(gif|jpg)$ http://www.lang="apache[notools]">votre-nom-de-domain.com/image-substitution.jpg [R,L]
Interdire les requêtes qui ne sont pas vides ou ne proviennent pas de votre site sur les fichiers statiques
Pour aller plus loin, essayez de tout interdire en somme… Les fichiers statiques sont par exemple vos images, feuilles de style, scripts, pdf, sons, vidéos, etc. Attention, il se peut que ce code soit incompatible selon votre hébergeur et vos plugins en place. C’est une autre façon radicale d’interdire le hotlinking.
#Denies any request on static files RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC] RewriteCond %{HTTP_REFERER} !^http://www.votredomaine.com.*$ [NC] RewriteRule .(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$ - [F,NS,L]
Encore une fois, si vous haïssez l’idée de chipoter avec du code, utilisez un plugin : Hotlink Protection Plugin for WordPress
Une astuce courante supplémentaire est d’ajouter du texte sur cette image de substitution en indiquant le lien de votre blog. Le message sera ainsi parfaitement clair.
NOTE UTILE : avant d’uploader vos images, il convient d’en réduire le poids via smushit en ligne.
18. CACHER VOTRE EMAIL AUX ROBOTS
Voici plusieurs solutions, choisissez la vôtre:
1) Pour afficher dans vos thèmes WordPress c’est facile. Utilisez la fonction existante pour faire apparaître votre Email sans qu’il soit visible aux spams en utilisant (par exemple dans le footer.php) :
<?php bloginfo('admin_email'); ?>
2) Encryptez votre adresse mail avec le générateur de liens Cebermail. Vous entrez votre adresse, on vous donnera le lien crypté à afficher sur vos blogs. Le lecteur clique sur le lien proposé, ce qui ouvre son logiciel de messagerie pour écrire à votre adresse. Il doit aussi résoudre un captcha s’il veut voir l’adresse non cryptée.
Par exemple mon Email crypté est : http://cerbermail.com/?MEj2eD3KRR
3) Générez une image de votre mail à afficher chez DomainTools. Vous pouvez régler la police, couleur et taille. On vous proposera un bout de code mais le mieux est encore de télécharger l’image générée puis de l’uploader comme n’importe quelle image :
4) Utilisez un script en php
Par exemple chez Php Sources : Adresse e-mail/mailto anti-spam (utilisant Javascript)
5) Utilisez un javascript
Collez ce script dans votre header.php entre les balises HEAD:
<script type= »text/javascript »> function openmail(a, b) { window.open('mailto:' + a + '@' + b); } </script>
Puis collez votre lien comme suit. Exemple pour info@domaine.com :
<a onclick="»openmail('info'," href="»#">Envoyer un message au Webmaster</a>
Ces solutions cachent votre adresse mail aux robots tout en permettant à votre visiteur de cliquer sur celle-ci. Ce qui ouvre son logiciel de messagerie avec un nouveau mail où votre adresse est déjà insérée.
19. PROTÉGER L’INDEXATION DES PARTIES SENSIBLES DE VOTRE BLOG 
Avec un simple fichier texte… Le très utile robots.txt à la racine de votre site peut aussi servir à masquer pour l’indexation les dossiers et pages vulnérables.
# All Bots User-agent: * Disallow: /wp-* Disallow: /*.php$ Disallow: /*.js$ Disallow: /*.inc$ Disallow: /*.css$ Disallow: /*.gz$ Disallow: /*.wmv$ Disallow: /*.swf$ Disallow: /*.cgi$ Disallow: /cgi-bin Disallow: /wp-admin/ Disallow: /wp-includes/ Disallow: /wp-content/ Disallow: /author/
De même vous pouvez empêcher l’indexation par des moteurs indésirables :
# Bing Picture Search User-agent: psbot Disallow: / # Dugg Mirror User-agent: duggmirror Disallow: /
20. Modifier le préfixe wp_ par défaut
Si vous installez un nouveau WP, faites-le tout de suite. Le préfixe wp_ définit le nom de ses tables sur la base de données. Particulièrement important si on compte héberger plusieurs blogs sur une seule base. Dans le wp-config.php, remplacer :
$table_prefix = 'wp_';
par un préfixe personnel qui ressemble à un mot de passe :
$table_prefix = 'blogCIEL2Uir5846_';)
Si votre blog est déjà en ligne, vous pouvez aussi modifier ce préfixe.
– Soit avec un plugin comme WordPress Table Rename Plugin.
– Soit manuellement chez votre hébergeur, dans votre console mySQL ou PhpAdmin. C’est plus simple qu’il n’y paraît. Deux méthodes :
– Soit en cliquant sur chaque table, via l’onglet Opérations : il faut le faire table par table. Affichez votre base de données. Vous voyez à gauche les 11 tables WP (plus, si vous avez installés des plugins invasifs).
Cliquez sur une table (à gauche). Une fois ouverte, cliquez sur Opérations (en haut à droite). Vous verrez alors une option Changer le nom de la table pour. Changez seulement wp et laissez bien l’underscore (_). C’est tout, vous voyez apparaître à gauche le nouveau de votre table. Recommencez l’opération pour chacune d’entre elle.
– Ou par des requêtes SQL via l’onglet Requête (ou SQL selon):
RENAME TABLE 'nom-base-données'.`wp_links` TO 'nom-base-données'.`votre-prefixe_links` ; RENAME TABLE 'nom-base-données'.`wp_options` TO 'nom-base-données'.`votre-prefixe_options` ; RENAME TABLE 'nom-base-données'.`wp_postmeta` TO 'nom-base-données'.`votre-prefixe_postmeta` ; RENAME TABLE 'nom-base-données'.`wp_posts` TO 'nom-base-données'.`votre-prefixe_posts` ; RENAME TABLE 'nom-base-données'.`wp_terms` TO 'nom-base-données'.`votre-prefixe_terms` ; RENAME TABLE 'nom-base-données'.`wp_term_relationships` TO 'nom-base-données'.`votre-prefixe_term_relationships` ; RENAME TABLE 'nom-base-données'.`wp_term_taxonomy` TO 'nom-base-données'.`votre-prefixe_term_taxonomy` ; RENAME TABLE 'nom-base-données'.`wp_usermeta` TO 'nom-base-données'.`votre-prefixe_usermeta` ; RENAME TABLE 'nom-base-données'.`wp_users` TO 'nom-base-données'.`votre-prefixe_users` ;
Attention, il faut effectuer une requête à la fois ! Ensuite, une fois vos tables renommées, il faut mettre à jour d’autres options :
– Changez la valeur wp_user_roles et wp_usermeta par votre-prefixe_user_roles et votre-prefixe_usermeta
– Changez wp_capabilities, wp_user_level, and wp_autosave_draft_ids par
votre-prefixe_capabilities, votre-prefixe_user_level, votre-prefixe_autosave_draft_ids.
Et éventuellement vérifier les métas :
UPDATE votre-prefixe_options SET option_name = REPLACE(option_name, 'wp_', 'votre-prefixe_'); UPDATE votre-prefixe_usermeta SET meta_key = REPLACE(meta_key, 'wp_', 'votre-prefixe_');
21. Autres ressources ailleurs 
Des blogs vous proposent également de :
- Changez le préfixe de vos tables WP dans wp-config.php (sur mon blog) ou utilisez un plugin comme WP-Security-Scan
- Créer une fonction antispambot via votre fichier functions.php antispam chez WpTavern : Secure Your Mail With WordPress Antispambot Function
- Créer une liste filtrante de mots clés de spams au moyen d’une fonction via votre fichier functions.php, chez WpRecipes : Automatically refuse spam comments on your WordPress blog
- Créer un trou noir virtuel contre les mauvais robots (niveau avancé de webmaster) : Protect Your Site with a Blackhole for Bad Bots
22. Victime de Hackers ? Quelques outils pour voir l’action 
Si vous êtes la cible d’une sérieuse attaque virale, essayez de voir ce qui se passe. Vous pourriez avoir besoin de ces Extensions (Addon) pour Firefox :
- User Agent Switcher (voir votre page avec un autre agent web)
- VTzilla Firefox Plugin (la puissante extension de chez VirusTotal qui analyse les sites et fichiers avant leurs téléchargements)
- Tamper Data (pour voir et modifier HTTP/HTTPS headers)
- ShowIP (voir le IP de la page sur laquelle on surfe)
- HackBar (Audit de securité et test de pénétration)
- SQL Inject Me (Pour tester les vulnérabilités d’injection SQL)
- BitDefender QuickScan (scanne et cherche les virus sur votre ordinateur)
- Malware Search (recherche de malwares dans une sélection de texte)
- Chez Assiste, une boîte à outils liens, conseils, logiciels antispam, antivirus et autres
+ A venir sur ce blog : un long tutoriel pour se sortir du pétrin lorsqu’on son WordPress est piraté, infecté ou vérolé.
23. Réglez la modération de vos commentaires 
Dans votre tableau de bord, prenez le temps de lire et configurer les mode d’accès de vos commentaires. Les options sont claires. Vous pouvez décider ce que vous voulez ou presque. Ne les autoriser qu’aux membres ou en accès libre. Modération obligatoire par un administrateur ou modération seulement pour ceux qui n’ont encore jamais posté (modération du premier). Ces paramètres ont également une incidence sur le contrôle et la réduction des spams.
Ou désactiver totalement les commentaires. Cette dernière option vous permet de décider au cas par cas pour chaque article ou page. Lorsque vous créez ou modifiez une page, cochez la petite case ‘autoriser les commentaires’, ou l’inverse…

Modérez les commentaires dans votre tableau de bord. Onglet REGLAGES puis DISCUSSION (cliquez pour agrandir l'image)
Bonne lutte !
Bonjour,
J’ai fais un tuto qui vous permettra de désinfecter votre blog wordpress des injections de codes dans les fichiers php ou js, ici
N’hésitez pas à me poser des questions
Bye
Franck
Bonjour Franck,
Je connaissais déjà votre tuto. Il contient quelques éléments de désinfection c’est vrai, pour traiter l’urgence c’est bien. Mais il manque des points pour se débarrasser vraiment d’un malware ou virus. J’essaierai d’écrire un billet sur le sujet.
Ouah, si avec tout ça, du spam passe…
Je n’ai plus AUCUN spam depuis longtemps et ça fait du bien.
Bonjour,
J’aimerai savoir si le fait de n’autoriser qu’une seul adresse IP dans un fichier .httacess sufit à securiser son blog wordpress?
Je suis sur un projet pour une entreprise, le blog sera sur un serveur externe (qu’ils payeront à l’année). Le blog ne doit être accessible que depuis le bureau, qui aura toujours la même adresse IP.
La protection est elle suffisante?
Merci pour votre aide
Et bien, voilà de quoi édifier une vraie muraille de Chine autour de son blog, afin que personne ne lui nuise ! Les spammeurs n’ont qu’à bien se tenir
Voici encore sur le sujet cette page
Bonjour,
Merci pour ce tuto, j’ai pu mettre presque tous ce qu’il faut pour protéger le blog à l’exception de 3 codes qui me génère une erreur 500 internal server.
Voici les 3 codes qui me font cette erreur :
# Restrict access WP-Admin login on a specific IP address
AuthUserFile / dev / null
AuthGroupFile / dev / null
AuthName “Access Control”
AuthType Basic
order deny, allow
deny from all
# Your IP address
allow from **.***.***.**
# Deny Obvious Trackback Spams
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP_USER_AGENT} ^.*(opera|mozilla|firefox|msie|safari).*$ [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /.+/trackback/? HTTP/ [NC]
RewriteRule .* - [F,NS,L]
# All Bots
User-agent: *
Disallow: /wp-*
Disallow: /*.php$
Disallow: /*.js$
Disallow: /*.inc$
Disallow: /*.css$
Disallow: /*.gz$
Disallow: /*.wmv$
Disallow: /*.swf$
Disallow: /*.cgi$
Disallow: /cgi-bin
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/
Disallow: /author/
J’ai changé le préfixe de ma table wordpress, c’est ce qui pourrait bloquer ?
Merci pour vos conseils.
Bonne journée
Aucun rapport pour le changement de préfixe, pas d’incidence. Mais comme dit dans mon billet (si j’ai bonne mémoire), ça dépend beaucoup de votre hébergeur. Normal que toutes les consignes ne fonctionneront pas. Ces lignes ont besoin du rewrite, et tous les hébergeurs ne le permettent pas. Faut tester. Impossible de livrer un htaccess par hébergeur, sans quoi me faudrait 2 semaines à temps plein et corriger tous les x 😉
Mais tu pourrais faire un tour par là pour un complément de réponse How to .htaccess
Vous dites de renommer le fichier .htaccess ainsi :
# rename htaccess
fichieracces ht.access
Ne serais-ce pas plutôt :
# rename htaccess
fichieracces .htaccess
?
Bonjour,
Merci beaucoup pour tous ces bons conseils, que j’essaie de mettre en pratique suite à de nombreuses tentatives de piratage.
J’ai une question de débutante : dans quel fichier exactement doit-on copier le code que vous proposez, par exemple au point 9?
Je me demande également si certains thèmes word press n’attirent pas les spammeurs, car je n’ai des attaques que depuis que j’ai changé de thème, et lorsque je passe sur un autre thème les attaques s’arrêtent immédiatement…
Merci pour vos réponses!
Bonjour, j’ai un très gros problème avec mon site depuis que j’ai effectué l’instruction n°3. ENCRYPTEZ LES COOKIES DE VOS CLEFS D’AUTHENTIFICATION
Je ne peux plus me connecter au site, le site est inaccessible en front comme en back-end. Le message d’erreur est le suivant : « Erreur lors de la connexion à la base de données. » Que dois-je faire pour rétablir mon site ?
Bonjour,
avant de faire quoique ce soit, est ce que si je créé et je remplace l’admin par un autre compte, je vais perdre les commentaires associés ?
Bonjour. Il faut d’abord créer l’autre compte et ensuite basculer l’ancien sur le nouveau.
Excellent article .
Merci beaucoup pour le partage . Très intéressant .
Le wordpress est génial .
Bonne journée.
Eh ben ca c’est du manel de combat ! ^^
On aimerait (heuuu… j’aimerais ^^) une version multisite. Certaines recommandantions ne peuvent en aucun cas etre utilisées en multisite (bloquage wp config, notamment, ansi que le no follow dans les commentaires : il faudrait le faire a la main dans tous les sites…)
Je me rend compte a la lecture (nerveuse) de cet article que WP est tout de meme une passoire difficile a maitriser en terme de sécurité, j’en fais les frais en ce moment même.
Quelques recommandations particulières pour multisite donc ?
Bravo en tout cas ! et merci !
Bonjour Aphrodite
La question de la protection du wp-config n’est pas si grave et peut être contournée via la mise en place d’un .htpasswd.
Il faut tenir compte de plusieurs facteurs :
– Ton problème est particulier (pour ceux qui veulent, elle en a parlé sur le forum de support ici). En gros Google dit que ta plateforme est saine mais en pratique, de façon aléatoire la visite de ton site propose à l’internaute un fichier inconnu à télécharger. Et tu ne sais pas d’où ça vient.
– Tu n’es pas en multi-sites mais en WPmu, ce qui est en effet un peu différent.
– Tu utilises un cPanel. Normal que tu ne puisses pas appliquer à la lettre les recommandations de mon manuel de sécurité ci-dessus puisque le cPanel gère lui-même un tas de réglages comme le htaccess. Dans ce cas il faut jongler un peu en utilisant les fonctions du pannel puis en vérifiant ce que ça donne et ajouter soi-même ce dont tu as besoin (via le FTP ou gestion de fichiers).
Je te conseille également de cocher les journaux logs pour voir ce qui se passe de louche. Localiser les accès douteux.
Maintenant le problème :
En visitant ton tableau de bord de plateforme WPMu et ta base de données, j’y ai vu des tas de dangers potentiels :
Une bannière publicitaire externe à l’intérieur même de ton tableau de bord…. Des plugins ouverts avec données externes, des scripts publicitaires sur lesquels tu n’as aucun contrôle. Des plugins et thèmes non mis à jour. Voici quelques conseils :
1° Sauvegarder la base de données actuelle
2° Mettre à jour tous les plugins, utilisés ou pas
3° Idem pour les thèmes
4° Ajouts de plugins de scan anti-malware et sécurité. Tous ceux que tu peux trouver… afin de tester, scanner…
5° Ajout plugin clean option : il scanne la base pour voir les traces des anciens plugins supprimés et permet d’effacer les inutiles. Une fois cela fait ne pas oublier d’optimiser la base de données.
6° Enlever tous ces scripts publicitaires en attendant le nettoyage complet. Tu n’as qu’à les sauvegarder, tu les remettras un à un plus tard si tu es certaine de leur provenance.
5° Enlever les plugins qui font appel à des données externes (j’ai dit enlever, donc y compris enlever leurs traces dans la base de données avec clean options)
Donc par exemple les plugins style Amazone, ceux des réseaux, Events, Ecwid Shopping Cart. En fait, je serai toi je serai plus radicale encore :
Supprime TOUS les plugins. Efface leurs traces dans ta base de données. Optimise ta base. Puis réinstalle des plugins propres et seulement les indispensables qui n’ouvrent pas ta plateforme à tous vents.
6° Dans ta base de données SQL, utilise l’onglet « Recherche » pour analyser tout ce qui est douteux
7° A ce stade encore une sauvegarde de ta base de données (note la version)
8° Tu l’ouvres en local et tu analyses, tu regardes, tu scannes avec un anti-virus et tu regardes aussi à l’oeil nu.
9° Tu mets un define dans ton wp-config qui empêche les requêtes externes, en permettant bien sûr celles qui sont indispensables (voir dans mon manuel de sécurité)
10° Essaies également de réinstaller WPMu. Supprimer puis réinstaller et non pas écraser. Je sais, c’est embêtant mais ça ne durera qu’une demi-heure.
11°Attention à tes chmods. Pas mal sont en 777, or tous les dossiers doivent être en 755 maximum et les fichiers en 644.
Ha oui, Point important avant de faire tout ça, puisque tu sembles avoir des souci avec ton htaccess normal, supprime les protections ou rewrite non indispensables. Pareil pour tout ce qui est règles de cache. Supprimer le plugin super cache via FTP, supprimer ses traces dans la base et du htaccess. Temporairement évidemment, juste pour pouvoir travailler sans se prendre la tête. Ainsi, tout ce que tu essaieras d’ajouter suivant les étapes décrites ci-dessus, tu verras là où ça plante précisément.
Bon courage.
Update : A la suite de ceci, tu m’as écris avoir effacé ta base de données par erreur. Cela règle en effet une partie du problème, sauf que tu ne sauras jamais d’où provient l’erreur et risque de recommencer. Trop radical ça. Bon courage pour la suite