NoSPAM

Un plugin pour limiter le risque de spam dans les forums de SPIP.

Le plugin introduit plusieurs mécanismes visant à limiter l’envoi de spams depuis les formulaires de SPIP (forums publics, formulaires de contact, formulaires des pétitions).

Un jeton périssable

Les formulaires se voient dotés d’un jeton périssable et lié à l’IP. Ce jeton empêche la réutilisation du même formulaire au delà de la durée de péremption, et rend ainsi le post automatique par robot plus compliqué.

Modération automatique dans les forums non modérés

Le but des spammeurs est de publier du contenu en ligne. Si les messages suspects sont modérés, l’intérêt du site diminue pour les attaquants qui iront voir ailleurs.

Le plugin utilise donc quelques règles de prudence pour modérer automatiquement les messages suspects.

-  Si un message contient trop de lien, il est modéré automatiquement, voire mis à la poubelle (où il peut être repêché par le modérateur). Les liens vers le site lui-même ne sont pas intégrés à ce compte. À partir de la version 1.6.0, on peut utiliser la constante NOSPAM_DOMAINES_AMIS pour indiquer une liste de sites (séparés par une virgule) qui n’entrent pas non plus dans ce compte.
Par exemple, dans votre fichier mes_options.php :
define ("NOSPAM_DOMAINES_AMIS", "spip.net, core.spip.org");

-  De même, si une adresse IP identique a déjà envoyé trop de messages consécutifs dans un laps de temps donné, les nouveaux messages sont automatiquement modérés.

-  A partir de la version 1.2.0, le plugin se base aussi sur la langue du message pour affiner la modération, et compare également l’adresse IP du posteur avec une base actualisée en temps réel des IPs malveillantes [1]

Le plugin pourra être enrichi de nouveaux dispositifs au fur et à mesure de vos retours.

Ne cumulez pas !

Si vous voulez aider à améliorer l’efficacité de ce plugin avec vos retours, ne l’utilisez pas en même temps qu’un plugin captcha ou un autre plugin anti-spam.

Le but de ce plugin est de faire aussi bien ou mieux qu’un captcha, mais sans gêner l’internaute.

Vous avez encore du spam juste après l’avoir installé ?

Les spammeurs aimaient bien votre site ! Alors ils viennent voir avec leurs petites mains pourquoi leurs robots ne passent plus, et ils font des tentatives pour comprendre.

Laissez les faire, mais faites attention à bien déclarer “SPAM” les messages qui en sont. Vous verrez que très vite ils vont se décourager d’envoyer des messages qui ne sont jamais publiés !...

Avec SPIP 2.x, utiliser le plugin Gestion forum pour déclarer un message en SPAM.

Protéger d’autres formulaires - simple

Le plugin peut aussi protéger vos formulaires personnalisés avec son système de jeton.
Pour cela, il suffit de déclarer votre formulaire dans la variable globale formulaires_no_spam, dans votre fichier mes_options.php (ou mon_plugin_options.php). N’oubliez pas de repasser par le panneau d’administration du plugin si vous avez ajouté un fichier mon_plugin_options.php.
Ici, par exemple, on déclare le #FORMULAIRE_CONTACT_LIBRE :

// proteger le #FORMULAIRE_CONTACT_LIBRE
$GLOBALS['formulaires_no_spam'][] = 'contact_libre';

Protéger d’autres formulaires - avancé

Si la protection simple n’est pas suffisante, plusieurs protections supplémentaires sont possibles :

Analyser le résultat saisi

On utilise les fonctions d’analyse de NoSPAM (présentes dans le fichier inc/nospam.php du plugin) dans la fonction vérifier() de formulaire_contact_libre.php.

include_spip('inc/texte');
// si nospam est present on traite les spams
if (include_spip('inc/nospam')) {
	$caracteres = nospam_compter_caracteres_utiles($texte);
	// moins de 10 caracteres sans les liens = spam !
	if ($caracteres < 10){
		$erreurs['texte_message'] = _T('forum_attention_dix_caracteres');
	}
	// on analyse le sujet
	$infos_sujet = nospam_analyser_spams($sujet);
	// si un lien dans le sujet = spam !
	if ($infos_sujet['nombre_liens'] > 0)
		$erreurs['sujet_message'] = _T('nospam:erreur_spam');
 
	// on analyse le texte
	$infos_texte = nospam_analyser_spams($texte);
	if ($infos_texte['nombre_liens'] > 0) {
		// si un lien a un titre de moins de 3 caracteres = spam !
		if ($infos_texte['caracteres_texte_lien_min'] < 3) {
			$erreurs['texte_message'] = _T('nospam:erreur_spam');
		}
		// si le texte contient plus de trois lien = spam !
		if ($infos_texte['nombre_liens'] >= 3)
			$erreurs['texte_message'] = _T('nospam:erreur_spam');
	}
}

Obfusquer les name du formulaire

A partir de NoSpam v2

C’est une méthode proposée par NoSpam qu’on peut activer au cas par cas en ajoutant une clé dans le tableau renvoyé par la fonction charger() du formulaire :

	$valeurs['_nospam_encrypt'] = true;
	return $valeurs;

Les valeurs possibles sont true pour obfusquer tout sauf les name commençant par session_ ou 'all' pour tout obfusquer.

A noter que cette option est aussi activable globalement pour tous les formulaire du site via un define dans le fichier mes_options.php

define('_SPAM_ENCRYPT_NAME', true);

S’assurer que l’utilisateur recharge la page avant de lancer l’action

A partir de NoSpam v2

La plupart des bots spammeurs se contentent de faire un POST sans charger le résultat.
Pour éviter de faire une action en base de données déclenchée par un spammeur de ce type, il est possible de retarder l’action faite dans la fonction traiter() du formulaire et de la faire déclencher par l’utilisateur uniquement si il affiche bien le message de succès et execute le Javascript de la page.

Pour cela on peut utiliser la fonction nospam_confirm_action_html() de la façon suivante dans la fonction traiter()

	include_spip('inc/nospam');
 
	if (function_exists('nospam_confirm_action_html')) {
		$html_confirm = nospam_confirm_action_html("mafonction", "Description", $args);
		$res['message_ok'] .= $html_confirm;
	}
	else {
		// ICI lancer normalement mafonction()
	}

Pour simplifier son usage, l’utilisation de nospam_confirm_action_html() est identique à celle de job_queue_add()

Footnotes

[1Cette comparaison se fait par récupération de la liste des IPs qui abusent, et non en envoyant des données à un service externe sur la personne qui écrit le message. Cette fonctionnalité ne fonctionnera pas sur certains hébergements gratuits.

updated on 27 May 2020

Discussion

121 discussions

  • 5

    Bonjour à tous !
    Je suis sur SPIP 3.0.16.
    J’utilise Formulaires et Tables version 0.5.6.
    Depuis 3/4 jours, notre hébergeur reçoit des milliers de SPAMs.
    J’ai rajouté et activé NoSPAM, mais ca ne fait rien.
    Comment activer NoSPAM pour les différents formulaires crées par le module Formulaires et Tables ? OU alors comment rajouter un CAPTCHA sur les formulaires ?

    Merci pour votre aide.

    • Si je comprend bien la documentation et le fonctionnement de form & table, mettre la ligne suivante dans le fichier mes_options.php (à créer le cas échéant) pourrait activer nospam sur le formulaire

      $GLOBALS['formulaires_no_spam'][] = 'forms';

      Cependant, je ne suis pas certain que cela marche, car form & table n’utilise pas directement la technologie CVT. Une migration vers Formidable protégerait mieux les choses.

    • Bonjour
      Merci pour votre retour.
      Donc pour vous le module formulaires et tables n’est plus d’actualité? Est ce sue formidable gère les spam ou captcha? Ou on peut intégrer les codes de nospam?
      Il faudrait que j’arrive à reprendre les formulaires (ily en a 3 ou 4) et que je les protege contre les SPAM (captcha ou autre).
      Quelle serait la meilleur solution selon vous ?

      Merci pour votre aide.

    • -  Forms et Table n’est plus maintenu, mais il peut encore servir.
      -  Formidable fonctionne nativement avec nospam. Je crois qu’il y a un module de conversion depuis Forms et Table
      -  VOus pouvez toujours tentez de rester sur forms et table en utilisant le code que je vous ai mentionné. Je n’en garanti cependant pas le fonctionnement certains, car Forms et table à un comportement particulier.

    • Re merci pour vos retours.
      Je vais essayé de garder “Forms&Tables” et rajouté l’option.

      Si ca ne fonctionne pas, on va voir à passer sur Formidable.

      Le fait que nospam soit intégré dans “formidable” évitera directement les SPAM, ou je dois faire autre chose ?
      Merci pour votre aide.

    • il n’y aura rien à faire.

    Reply to this message

  • Est-ce que ça a du sens d’ajouter le formulaire de recherche dans la liste des formulaires à protéger ? (via $GLOBALS['formulaires_no_spam']).

    Sur un site, on enregistre les termes des recherches effectuées, mais une part importante sont complètement farfelues, sans doute l’oeuvre de robots : «lijtysqgppufdbqnhz», «xhcpitvmdznlcktssm», etc.

    Si j’active la protection sur la recherche, est-ce que ça risque d’impacter les vrais utilisateurs ?
    Par exemple, est-ce que le fait de faire plusieurs recherches d’affilée va être considéré comme suspect par nospam ?

    Reply to this message

  • 3

    Bonjour

    Suite à des spams et après discussion sur IRC, j’ai encore une question par rapport au fichier nospam_ip_list.txt (il est à jour sur mon site), j’aimerai savoir comment les adresses ip spam sont rentrées dans ce fichier et si éventuellement on peut vous communiquer des IP, merci.

    • Bonjour,

      Ce sont les ip rajouter que Nursit et son réseau de site bloque, on peut pas en bloquer personnellement. C’est bien dommage.

    • Non, rien à voir avec nursit Pierre, la liste est basée sur un réseau de sites de confiance. C’est justement tout l’intérêt de la chose de ne pas permettre à n’importe quelle site d’ajouter des ip à cette liste sans quoi elle contiendrait certainement des faux positifs.

    • Bonjour

      Oui, je comprend que l’on ne puisse pas mettre soi même des IP à volonté...
      Mais au cas ou les 3 IP (188.143.232.27, 188.143.232.32, 188.143.234.155) proviennent du même endroit et sont déjà bien répertoriées pour le spam sur Internet.
      Sinon, b_b, je pensais que les posts “partaient” tout seuls dans spam mais non, en fait, c’était la propriétaire du site qui les déclarait en spam depuis son mail (forum avec modération à priori)... et du coup, vu que ça continuait, j’ai fini par les bloquer dans le htaccess, tout va bien maintenant...
      Encore merci pour ton aide.

    Reply to this message

  • Bonjour à tous,

    J’ai plus de 1000 messages dument classés en spams
    comment les supprimer pour de bon ?

    Un grand merci!

    Reply to this message

  • 4

    Bonjour,

    Lorsque j’active ce plugin, j’ai une erreur w3c (la seule du site ;) ) avec le div id=“give_me_your_email” qui est présent deux fois.

    Je me demandais si il s’agissait du fonctionnement intrinsèque du plugin ou si il était possible de faire autrement.

    Merci pour ce temps de développement passé au profit de la communauté !

    • Salut, ce n’est pas le comportement par défaut du plugin, donc ça ne doit pas venir de lui. Peux-tu nous donner l’adresse de la page en question pour qu’on tente de t’aider ?

    • Merci de ta réponse rapide.

      Le site est en local pour l’instant. Je vais vérifier mes boucles, ça pourrait venir de là. Je l’ai déjà fait, mais j’ai dû passer à côté de quelque chose.

      Si je ne trouve pas, je mettrais le site en ligne et repasserais par ici avec l’adresse.

      Bonne journée !

    • Trouvé !

      J’avais tout simplement un formulaire d’inscription sur la même page que le forum.
      Et vu que j’étais connecté, je ne le voyais pas au début.
      Et forcement, ça me faisait deux div id.

      Désolé du dérangement pour rien !

    • Ha ok je vois le bug, content que tu aies résolu ton problème :)

      c’est tout de même pas terrible que le plugin insère un hidden avec un id fixe comme ça. Cela peut poser problème dès que nospam se branche sur deux formulaires dans une même page. Il faudrait ajouter une variable à cet id pour éviter ce genre de pb.

    Reply to this message

  • 2
    obiwanriko

    Bonjour
    Est-ce que ce plugin peut aussi “protéger” les formulaires créés avec Formidable ?
    Merci

    Reply to this message

  • 2
    Dominique Dupagne

    Bonjour

    NoSpam limite le nombre de caractères dans un commentaire et le tronque (environ 3000). comment changer ce réglage ? (la troncature disparaît quand je désactive nospam, donc c’est l’affichage qui est tronqué)

    • heu non, nospam ne limite pas la taille des messages. je viens de reverifier.

    • Dominique Dupagne

      Curieux. La limitation doit venir d’ailleurs. Mais elle avait disparu avec la désactivation de nospam. 1.57 sous Spip 2.1.14
      En revanche, en réactivant NoSpam (au passage merci infiniment pour cet outil) le message de commentaire n’a pas été retronqué.
      Merci pour la réponse.

    Reply to this message

  • 4

    Bonjour Cédric

    Je t’écris pour te signaler que AntiSpam ne fonctionne plus du tout sur plusieurs de mes sites, et depuis quelques semaines.

    Je suis inondé de SPAM pourris. Des petits malins on mis au point un processus automatique d’inscription et d’envoi automatique, qui passe au travers de antiSPaM malgré un contenu SPAM qui crève les yeux.

    Je suis à ta dispo.

    PS : j’ai installé un CAPTCHA provisoirement.

    • Deux exemples de messages reçus, cela ressemble à une mauvaise traduction automatique :

      vous etes 1 connectes Humour musulman , comedie islamique , islam comedie , islam humour , comedie semite , humour arabe , islamophobie , Apartcatoutvabien cela liminaire lieu en meme temps que comedie islamique. Il realise et diffuse certains spectacle zapping comiques avec indiscutables joyeux musulmans nonobstant que humour stoppe la epouvante en compagnie de islam apres rapproche a nous differentes communautes.

      ou encore :

      Avant avec contracter un credit, parfait personne se renseigne reception sur ces enchere decisifs banques apres confirmes organismes boursier malgre connaitre celles lequel presentent ceci credit consommation meilleur taux - lien supprimé - meilleur taux a egard de credit. Sur internet ou bien selon agence, en revanche un simple dissimulation ou unique complement complet jusa cette concretisation de votre projet, do’levant toi dont choisissez ! Cette feuille vous fournit ces meilleurs taux en compagnie de livrets epargne chez celui-ci instant. Accueil > Espace credit immobilier > Ces taux avec votre region Offre valable contre integral premiere echappee un livre Zesto avec rare chemise accepte avant ceci 1er juin 2014. Cela taux promotionnel brut a egard de 4 % applique pendant 6 mensualite a compter de la aube issue, dans la profil a egard de 100 000 euros a egard de depot apres dessous reserve en meme temps que existence du brochure au 31 decembre en compagnie de annee suivant cette aboutissement avec cette bonification. Au-dela, les versements effectues seront remuneres au taux annal avec soubassement brut en compagnie de 1,80%, ombrageux a egard de bouleversement.

      Ces messages contiennent un lien que je n’ai pas recopié évidemment.

      Tous les SPAMS reçus sont de ce niveau. Aucun n’a été identifié comme SPAM.

      Is sont envoyés par salve de 2 à 4 messages, avec un délai de 5min entre chaque message.
      Et un délai de 2h environ entre salve.
      Et cela, sur plusieurs de mes sites.

    • Tu veux dire que le site accepte les inscriptions, qu’un auteur est créé par le spammeur (automatiquement bien sur) ... puis qu’il vient commenter et spammer régulièrement (depuis des ips différentes bien sur) ?

      C’est l’éternel jeu du chat et de la souris avec les spameurs, ils essayent des techniques pour contourner . Tu les marques comme spam à chaque fois ? nospam est bien à jour je suppose ?

    • Tu veux dire que le site accepte les inscriptions, qu’un auteur est créé par le spammeur (automatiquement bien sur) ... puis qu’il vient commenter et spammer régulièrement (depuis des ips différentes bien sur) ?

      C’est exactement cela.

      Tu les marques comme spam à chaque fois ?

      Oui bien sûr.

      nospam est bien à jour je suppose ?

      Oui, 1.5.7

    • Pas facile ... la hantise d’un antispam c’est de bloquer un spam pas légitime ... Du coup normalement un utilisateur qui est connecté au site on lui fait plus confiance. C’est ce qui arrive dans ce cas là. Pas grand chose à faire pour l’instant, il faut attendre une mise à jour de nospam qui proposera une parade pour contrer ce cas d’usage.

    Reply to this message

  • Bonjour,

    Un petit effet de bord avec le plugin coloration syntaxique (observé sur forum.spip.net):

    Quand on poste du code php, <cadre class='php'>,coloration syntaxique génère des liens vers php.net quand il reconnait une fonction interne à php. Du coup on se fait modérer comme des malpropres. :(

    Si on pouvait configurer qq domaine autorisés ça serait plutot cool!

    Reply to this message

  • 6

    Bonjour,

    Cet anti-spam semble pratique pour protéger les adresses électroniques des robots.

    Mais si on met ces deux lignes pour le formulaire “Contact libre” :

    // proteger le #FORMULAIRE_CONTACT_LIBRE
    $GLOBALS['formulaires_no_spam'][] = 'contact_libre';

    comment les rédiger pour le formulaire SPIP classique… ?

    Merci d’avance.

    • vous voulez parler de #FORMULAIRE_ECRIRE_AUTEUR?
      Si j’en crois la doc,
      $GLOBALS['formulaires_no_spam'][] = 'ecrire_auteur';

    • Heu, le formulaire Contact que l’on trouve à : /spip.php?page=contact
      C’est le même que celui pour écrire à l’auteur ?

    • si vous utilisez les squelettes par défaut de SPIP oui (je ne savais même pas que cette page existait!)

    • Si si, avec Sarka-Spip.
      Merci ;)

    • je ne connais pas sarka-spip, il faut regarder quel est le formulaire appelé.
      Cela dépend visiblement de votre configuration: soit ecrire_auteur, soit contact

    • Sarka propose dans ses réglages :

      • Formulaire du plugin « Contact Avancé »
      ou
      • Formulaire SPIP classique

      J’ai coché ce dernier et j pencherais donc pour ’contact’

      Merci ;)

    Reply to this message

Ajouter un commentaire

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom