Depuis une dizaine de jour, tous les formulaires présents sur dipi-graphics se faisaient bombarder par des robots spam. (2 messages par 10min environ pour les comments)
Je n'avais pas mis de protection pensant que mon portfolio ne serait pas assez "référencé" pour que des bots crawler me repèrent. Visiblement, ce ne fut pas le cas. J'ai donc commencé par mettre en place une simple protection; la technique d'un input caché via Css ou Js et qui doit rester vide pour la validation ( les bots ont tendance à remplir tout les champs ) Cette technique fonctionne en général si on a jamais eu la visite de ces fameux spam. En effet, lorsque votre site ce fait déjà spammer, vous pouvez changer ce que vous voulez dans votre formulaire, il n'est plus inspecter par les robots qui ont mémorisé uniquement l'adresse du fichier qui va traité les données. Bref votre champs invisible n'aide donc absolument pas à cesser leur activité.
Je ne voulais pas mettre de captcha. Le captcha est un gêne pour l'utilisateur. Bien que contre cette technique, j'ai tout de même créer une petit script php pour généré une image captcha mais finalement j'ai opté pour un autre solution.
La solution qui finalement pour moi est la meilleure, c'est de parvenir à identifier un bot par l'analyse des données entrées dans le formulaire. Finalement un bon coup de regExp permet de facilement identifier des bots. L'inconvénient est que bien évidemment, lorsqu'un bot apparait, il faudra faire une nouvelle règle pour le filtrer mais c'est aussi un avantage, grâce à ce système, il me suffira de lire le message du bot et d'en déduire une regExp adéquate tout en restant complètement invisible pour un humain.
Ce qu'il faut aussi savoir sur ces robots, c'est qu'il re-crawleront votre site si ils obtiennent un message d'erreur. Imaginons le cas suivant, un simple formulaire se fait spammé, vous ajouté un captcha à votre formulaire, ou vous déplacez le fichier de traitement des données, les robots détecteront une erreur soit le fichier qu'ils ciblent a disparu et il re-crawleront votre site pour trouver la nouvelle adresse, soit apparition d'un captcha et si le bot le permet il déchiffrera votre catpcha. Donc important de ne pas bloquer le bot sur votre formulaire afin qu'il ne réanalyse pas votre site et qu'il ne se rende pas compte que ses messages sont filtrés et ne sont jamais enregistrés dans la DB.
Ca fait maintenant 24h qu'aucun bots n'a posté quoique ce soit sur le site. la solution mise en place semble donc efficace.
Denis P.
Comments (2)
pixeline said :
Voir aussi les solution "en amont", qui présentent des avantages importants:
- moins de gaspillage de la bande passante et du CPU
- aucune gêne pour l'humain
En général, un simple include et hop, on supprime 90% des spam par une simple analyse de la requete HTTP
notamment:
- akismet
- bad behavior
A utiliser en complément de ton approche.
Sun, Sep 12th 2010, 00:09
Denis said :
Je connaissais pas Akismet ni bad behavior.
Merci pour l'info.
Il existe déjà des component/behavior pour cakePhp qui utilise akismet. Je vais jeter un oeil sur le fonctionnement et inclure ça prochainement dans mon traitement de données.
Sun, Sep 12th 2010, 07:09
Leave a comment