Gravity Forms : activer l'anti-spam honeypot sur tous les formulaires photo

Gravity Forms : activer l’anti-spam honeypot sur tous les formulaires

Gravity Forms permet de créer rapidement des formulaires avec des logiques conditionnelles sous WordPress.

Dans les options de Gravity Forms, il existe une option qui ajoute un champ caché au formulaire, “honeypot”, qui permet d’éviter le spam mais qui doit être activé manuellement pour chaque formulaire, ce qui peut être rapidement fastidieux selon le nombre de formulaires que vous avez sur le site.

Voici comment activer et ajouter le champ honeypot à tous vos formulaires, automatiquement:

<?php
/**
 * Enforce anti-spam honeypot on all Gravity forms.
 *
 * @param array $form The current form to be filtered.
 * 
 * @return array
 */
add_filter( 'gform_form_post_get_meta', __NAMESPACE__ . '\\sky_enforce_gravity_forms_anti_spam_honeypot' );
function sky_enforce_gravity_forms_anti_spam_honeypot( $form ): array {
	$form['enableHoneypot'] = true;
	return $form;
}Code language: HTML, XML (xml)

Et voilà, une protection supplémentaire et automatique pour tous vos formulaires !

spam-lol-201206-dentier-gant-de-baseball

Echange dentier contre gant de baseball

Il y a quelques jours, j’ai eu la surprise de recevoir un spam manuel sur le blog – ce qui devient assez rare, la plupart du spam étant totalement automatisé. Et je dois dire qu’il m’a bien fait rire :

spam lol 201206 dentier gant de baseball

Echanger un dentier contre un gant de baseball… mais pourquoi pas ?? Ils sont fous ces spammeurs.

honeypot-it-security

Projet Honey Pot : 1 milliard de spams traités

no-spam

Il y a quelques années, j’ai pris part au projet Honey Pot qui vise à identifier les responsables d’envois massifs de courriers indésirables (autrement dit : du spam) grâce à des pages créées à cet effet.

Dans la même optique, j’avais utilisé wpoison pour créer des adresses email bidons pour corrompre la base email des robots aspirateurs.

Et bien ce projet ambitieux vient de traiter plus d’un milliard de spams depuis son lancement. Cela a donné lieu à une petite étude et voici ce que l’on peut en retirer.

Lire la suite

Une capture d'écran d'un écran d'ordinateur affichant le menu de MSNFix

Eliminer le cheval de troie MSN qui touche Facebook

Il y a quelques jours, j’ai reçu un message sur Facebook, envoyé par un de mes contacts. Comme cela vient d’un contact de confiance, je clique sur le lien : rien ne se passe.

Je l’informe alors que son lien ne fonctionne pas : elle me répond qu’elle n’a jamais envoyé ce message. Bizarre !

Le problème : un trojan MSN qui envoie des messages aux contacts Facebook

Il s’agit en fait d’un bon petit cheval de troie comme on en voit voyait tous les jours dans nos boites mail (avant Gmail).

Le truc qui change, c’est qu’il se trouve dans un message à lire sur le site de Facebook. Les messages avaient les sujets suivants :

c’est pas toi ?
ta tof fais koi sur ce site ?

Is it u there??
Hey yo.
This video frm our weekend.
I saw you htere. I’m soo proud to see it.

Lire la suite

Se débarrasser des spams avec SpamAssassin

No Spam !

Vous possédez votre propre site et êtes submergés par le spam ?

Si vous ne souhaitez pas confier votre précieuse correspondance à un service tiers de messagerie (webmail de votre FAI ou autres) et que votre hébergeur vous propose CPanel pour administrer votre site, voici comment se débarrasser des spams de manière automatique avec SpamAssassin et une règle de filtrage qui s’appliquera à chaque message reçu par le serveur.

Lire la suite

Protéger une newsletter des spammeurs

Antispam

Après avoir pollué nos boîtes mail de scams et de tentatives de phishing – et certains sites de spywares et autres malwares – voici que les spammeurs ont trouvé une nouvelle cible : les newsletters.

Cette tendance semble avoir démarré il y a quelques semaines : la newsletter de SkyMinds.Net subit par exemple une dizaine d’attaques par jour.

Le principe

Les spammeurs semblent vouloir corrompre les bases de données des newsletter en les populant avec des emails erronées (nom d’utilisateur ou domaine inexistant).

Finalement, ils ont repris le principe de wpoison mais contre nos bases de données cette fois !

Le but de cette manoeuvre, à part la surcharge des serveurs mails et des filtres anti-spam, reste relativement obscur. Ils n’ont à priori rien à gagner ainsi.

Se protéger

Si vous gérer votre lettre d’information, vous risquez d’être la cible de ces spammeurs. Il existe plusieurs manières de s’en protéger.

Vérifier l’adresse email avant l’insertion dans la base de données : solution écartée car coûteuse en ressources.

En effet, votre script doit vérifier le nom de domaine puis l’existence de l’utilisateur sur le domaine. La requête peut ne pas aboutir (time-out) et votre possible souscripteur aura quitté votre site devant la lenteur d’exécution.

Valider et insérer l’adresse dans la base dès l’inscription. C’est la solution retenue ici pour son efficacité et sa facilité d’utilisation.

Validation d’adresse email pour une newsletter

Prenons l’exemple de la newsletter de SkyMinds.Net qui utilise plusieurs routines afin de vérifier que la base données est bien peuplée d’adresses emails légitimes.

L’adresse est ajoutée directement à condition qu’elle soit correctement formée. Un mail est alors envoyé au visiteur afin qu’il confirme son inscription. Sans aucun geste de sa part dans les 3 jours, l’adresse est supprimée.

Vérification de la bonne formation de l’adresse email :

/* 
* Script Validation d'email par Matt
* https://www.skyminds.net/ 
* Retourne TRUE si l'adresse est valide et FALSE si incorrecte. 
*/
function SkyVerif($mail) { 
return( eregi ("^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\\.[a-z]{2,4}$", $mail ) );
} Code language: PHP (php)

Suppression automatiques des adresses non-validées dans les 3 jours suivant l’inscription.

La table contenant les adresses contient deux champs : opt_in (statut de l’adresse, égal à no par défaut) et register_date (date d’inscription) :

/* 
* Script Antispam-Expiration par Matt
* https://www.skyminds.net/ 
* Les adresses non validées au bout de 3 jours sont supprimées automatiquement 
*/ 
$sql = "DELETE FROM {$newsletter_table} WHERE `opt_in`= 'no' AND `register_date` < DATE_SUB(NOW(), INTERVAL 3 DAY)"; 
$query = mysql_query( $sql ); Code language: PHP (php)

Ces routines sont lancées à chaque fois que quelqu’un cherche à s’inscrire sur la newsletter: pas besoin de cron pour garantir l’intégrité des données.

Chaque nouvelle inscription fait le ménage dans la base de données et optimise les tables : suppression automatique des fausses adresses et autres techniques de spam!

Sélection de plugins anti-spam pour WordPress

Tiens, c’est bizarre, je commence à avoir du spam sur mon compte Gmail : je n’en avais jamais eu jusqu’à présent et j’ai bien dû en recevoir une dizaine aujourd’hui. Même s’il est immédiatement capté par les filtres et redirigé dans le dossier spam, on perd toujours du temps à vérifier que des messages légitimes ne sont pas passés à la trappe. Une vraie perte de temps.

Heureusement, je n’ai (quasiment) plus ce problème sur le blog : après des dizaines d’essais, je pense à être arrivé à la solution la plus intéressante en terme de défenses antispam.

J’ai abandonné la solution en .htaccess qui bloquait certains utilisateurs pour utiliser les plugins suivants :

  • Better Comments ventile à vue les commentaires postés avec des noms d’utilisateurs composés uniquement de chiffres et permet d’éviter qu’un inconnu ne se fasse passer pour un utilisateur enregistré sur le site.
  • SpamJam est le must du must: il trompe littéralement tous les bots avec sa panoplie de mesures antispam, qui ont le mérite de fonctionner mais surtout d’être complètement invisibles pour les gens normaux.

Analysons un peu la situation : en activant seulement Akismet, le blog captait entre 100 et 200 spams par jour. En activant SpamJam, c’est environ un spam tous les trois mois !

Ce sont pour moi les 2 plugins les plus efficaces. J’ai essayé Bad Behavior pendant quelques temps mais cela ne m’a pas convaincu, doublant la taille de la base de donnée en quelques jours !

Akismet devient payant dès que vous tentez de monétiser votre site donc ce n’est pas une solution viable non plus (mais je peux comprendre, ce ne peut être un service gratuit vu le nombre dantesque de spams traités tous les jours).

Je considère donc ma quête comme momentanément aboutie – être virtuellement spam-free, c’est très agréable !

Two businessmen fighting over a link to prevent image theft.

Apache : prévenir le vol d’images par hotlinking

GhostBuster

J’ai récemment eu affaire à des voleurs de contenu et après avoir contacté le service des abus de MSN, j’ai reçue une réponse pré-formattée comme quoi il fallait que j’envoie tous les justificatifs et tous les détails prouvant mon identité à Microsoft par courrier postal.

Mais bien sûr… et la marmotte…

Étant donné que je n’allais recevoir aucune aide de leur part, j’ai retroussé mes manches et me suis appliqué à trouver une solution.

Qu’est-ce que le hotlinking des images ?

Le hotlinking des images, parfois appelé “leeching”, “piggy-backing” ou “inline linking”, est une pratique qui consiste à intégrer une image sur un site web en utilisant une URL directe qui charge l’image à partir du serveur d’un autre site. Cela signifie que chaque fois que la page est chargée, l’image est téléchargée depuis le serveur externe, non pas celui sur lequel réside la page web.

Cette méthode peut sembler pratique pour économiser de l’espace de stockage ou éviter le téléchargement et le rechargement d’images. Cependant, elle a plusieurs conséquences négatives, tant pour le site qui héberge l’image que pour celui qui l’intègre.

  1. Consommation de bande passante : Le principal inconvénient du hotlinking est qu’il consomme la bande passante du site hébergeant l’image sans lui apporter de trafic direct. Ceci peut entraîner des coûts supplémentaires pour le propriétaire du serveur, surtout si son site est populaire ou si l’image devient virale.
  2. Problèmes de performance : Si plusieurs sites hotlinkent une image d’un même serveur, cela peut ralentir significativement la vitesse de chargement du site hébergeant l’image, impactant ainsi l’expérience utilisateur sur ce site.
  3. Perte de contrôle sur le contenu : Le propriétaire du site hébergeant l’image perd le contrôle sur où et comment son image est utilisée. Cela peut poser des problèmes de droits d’auteur et d’image de marque.
  4. Problèmes de référencement : Les moteurs de recherche peuvent pénaliser les sites qui pratiquent le hotlinking, car cela peut être interprété comme du contenu dupliqué ou une pratique malveillante.

Lire la suite

Referer Spam : headshots à revendre

Le truc à la mode chez les spammeurs en ce moment c’est le referrer spam, ou la pollution de vos logs Apache par des sites peu recommandables, vous donnant ainsi l’impression que la moitié de vos visiteurs sont des détraqués sexuels cherchant le repos dans des analyses économiques ou dans des exposés de littérature espagnole, comme Don Alvaro ou Dona Inés.

Au début, on se demande comment ces mystérieux visiteurs ont pu trouver notre site. Après 3 ou 4 jours et quelques milliers de hits sur les mêmes pages avec un pic de consommation de bande passante, on commence à voir rouge.

Ma mission (et je l’accepte) : bouter les spammeurs hors du site. J’ai pour cela étudié 2 possibilités : soit on gère tout avec Apache et ses .htaccess, soit on écrit un script PHP qui va bloquer les intrus et les envoyer ailleurs.

J’ai privilégié le .htaccess vu que cela se fait au bas niveau du serveur, ce qui devrait consommer moins de ressources que l’interprétation du script PHP.

Méthode 1 : utilisation du .htaccess

Le principe est simple : nous allons tester la variable HTTP_REFERER de nos visiteurs et vérifier qu’ils ne sont pas blacklistés.

S’ils le sont, on les expédie sur un site bidon (voir la dernière ligne).

Toutes les lignes de la blacklist se finissent par [OR] ou [NC,OR] sauf la dernière qui se termine en [NC]:

RewriteEngine On
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?joyvids.com.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?formymob.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?foryourmob.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?bkinky.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?topshelfinks.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?wickedringtones.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?pvblog.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?highprofitclub.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?wickedringtones3.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?wickedringtones4.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)adult(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)anal(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)gay(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)mature(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)nude(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)porn(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)pus*y(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)sex(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)teen(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)tits(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)titten(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*accepted.cc$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*episodesusdbz/.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?advancedmoneyloans.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?affiliplanet.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?apart-?design.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?auktion.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?autogewinne24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?autospiele24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?babay.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?euromillionen.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?eurowins.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?geldspiele24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?goovle.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?gsm-support.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?gzltax.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?heil-fasten.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?immobiliengewinne24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?incest-.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?keywordmaster.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?nackt-stars-nackt.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?one2onemag.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?qw8.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?referrer-script.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?reisegewinne24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?rootfood.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?shemale.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?single66.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?slamhost.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?spielepsychatrie.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?superface.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?topgewinn24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?topspiele24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?transexual.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?usa-wins.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?vendini.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?webmasterplan.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?wseeker.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?xmaster.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?spammersite7.com.*$ [NC]
 RewriteRule \.*$ http://spam.abuse.net/ [R,L]
 RewriteEngine OffCode language: JavaScript (javascript)

Méthode 2 : utilisation d’un script PHP

Même principe mais en se servant de PHP, je ne vais pas réinventer la roue : suivez l’exemple de Holy Schmoly!

Voilà, le mois de mars vient de commencer et je n’ai plus aucun pollueur dans mes stats. La liste est bien sûr à moduler selon vos spammeurs et les sites que vous souhaitez bloquer.

Installation de wpoison

Aujourd’hui : installation de wpoison, un script perl qui sert à corrompre les bases d’emails des spammeurs en créant à la volée des pages HTML pleines de vraies-fausses adresses. Comme j’ai mis un peu de temps à configurer les droits d’accès du script, je vous fais ici part des principales étapes.

Tout d’abord téléchargez wpoison (click droit > enregistrer sous…) ainsi que le dictionnaire qui servira à générer le texte des pages web et des fausses emails.

Dézippez le dictionnaire. Vous avez maintenant deux fichiers : le dictionnaire et le script Perl. Uploadez-les sur votre site dans le répertoire de votre choix. Dans mon cas, je les ai placés sous /cgi-bin/ parce que c’est là que les spammeurs tapent en premier, selon mes logs.

Etape finale : définir les bons droits pour le répertoire et pour les deux fichiers. Chmodez tout en 755. Tada ! Installation terminée ;-).

Petit exemple live de wpoison.