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 ...

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 = 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 = 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 = 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');
	}
}

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 2 October 2019

Discussion

119 discussions

  • 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

  • Bonjour, il y a un truc curieux avec NoSPAM
    -  parfois il laisse passer des spams contenant des liens commerciaux (ce qui en soit n’est pas trop grave, puisqu’à force de les signaler il finit par comprendre)
    -  mais ce qui est plus embêtant c’est que d’autres fois il modère automatiquement des messages contenant un lien... interne ! Et ce sans en informer le malheureux internaute qui croit que son message a disparu et qui retente trois ou quatre fois de le poster avant d’abandonner.

    Le truc est-il connu ? Si oui, comment faire en sorte que sur un forum modéré a posteriori le plugin signale au moins à celui qui a posté le message, au moment de la validation, qu’il n’a pas disparu... mais juste été modéré automatiquement... et que le webmaster en sera informé ?

    Merci par avance.

    Reply to this message

  • 1

    Impossible de me servir de nospam

    Fatal error: Call to undefined function: mb_strlen() in /mnt/130/sdb/3/8/gerardgreco/plugins/nospam/inc/detecter_langue.php on line 194

    • Salut, cette fonction est dispo à partir de PHP 4.0.6, quelle version de SPIP et PHP utilises-tu ?

    Reply to this message

Comment on this article

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