Depuis la mi-février, j'ai constaté une augmentation du trafic sur un très petit site Web, qui commençait à m'envoyer un journal d'accès quotidiennement.
Le bot demande à la page d'accueil à plusieurs reprises, publiant du contenu dans un formulaire avec un "3 + 6 =?" vérification. Au début, ces messages contenaient des liens vers d'autres sites Web. J'ai donc décidé de bloquer avec php tous les messages contenant "href", "http" ou "www". Cela a supprimé le spam pendant un certain temps, mais de nouvelles publications ont été publiées avec un contenu aléatoire du type "à quelle université vous allez", "je suis bon", ...
J'ai donc ajouté un pot de miel, un champ qui devrait être vide et qui a été surmonté en quelques heures par le bot. Ensuite, j'ai ajouté un champ caché avec un horodatage obfusqué qui parvient à garder 99,99% des posts. Il n'y a donc plus de mauvaises données stockées, mais le bot utilise toujours les ressources du site. L'inondation se compose de milliers de demandes et semble s'intensifier avec le temps.
J'ai trouvé beaucoup d'informations qui sont similaires à mon problème, mais je ne comprends pas comment en implémenter. Comment puis-je empêcher ce bot d'utiliser les ressources de mon site Web?
Vous trouverez ci-dessous une image illustrant l'inondation et un extrait du journal des accès (exemple.com étant le nom du site Web). Ces résultats ne sont pas enregistrés par Google Analytics.
188.143.232.26 - - [11/Mar/2016:15:01:52 +0100] "POST /index.php HTTP/1.1" 200 7367 "http://www.example.com/index.php?p=Home" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
188.143.232.26 - - [11/Mar/2016:15:01:53 +0100] "POST /index.php HTTP/1.1" 200 7367 "http://www.example.com/index.php" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
188.143.232.26 - - [11/Mar/2016:15:01:53 +0100] "POST /index.php HTTP/1.1" 200 7162 "http://www.example.com/index.php?p=Home" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
188.143.232.26 - - [11/Mar/2016:15:01:53 +0100] "POST /index.php HTTP/1.1" 200 7152 "http://www.example.com/index.php" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
188.143.232.70 - - [11/Mar/2016:15:02:02 +0100] "GET /index.php?p=Home HTTP/1.1" 200 6753 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
188.143.232.70 - - [11/Mar/2016:15:02:02 +0100] "POST /index.php HTTP/1.1" 200 7274 "http://www.example.com/index.php?p=Home" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
188.143.232.70 - - [11/Mar/2016:15:02:02 +0100] "POST /index.php HTTP/1.1" 200 7274 "http://www.example.com/index.php" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
188.143.232.70 - - [11/Mar/2016:15:02:02 +0100] "POST /index.php HTTP/1.1" 200 7212 "http://www.example.com/index.php?p=Home" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
188.143.232.70 - - [11/Mar/2016:15:02:02 +0100] "POST /index.php HTTP/1.1" 200 7212 "http://www.example.com/index.php" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
188.143.232.70 - - [11/Mar/2016:15:02:02 +0100] "POST /index.php HTTP/1.1" 200 7230 "http://www.example.com/index.php?p=Home" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
Voici quelques options qui pourraient vous aider:
1) Verrouillez les très vieux navigateurs et les agents utilisateurs qui n’ont aucun sens.
2) Chargez le formulaire avec ajax après que JS détecte le mouvement de la souris/tap et confirme contre le jeton de session côté serveur.
3) Utilisez un meilleur captcha tel que reCaptcha .
4) Utilisez un throttler à un taux convenable, tel que 8 à 10 demandes toutes les 5 secondes, être bloqué pendant 30 secondes.
5) Faites une liste noire de tous les pays dont vous n'avez pas besoin de visites.
6) Liste noire des ASN des principaux hôtes de spam/FAI.