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

  • 11

    Bonjour

    Je suis sous spip 2.1.23 et j’ai installé NoSPAM ainsi que l’interface d’administration des forums.

    J’avoue que j’ai du mal à comprendre le fonctionnement du plugin car chaque semaine, via le plugin d’administration des forums, je signale comme spam des dizaines de messages ayant la même ip et la même adresse courriel...
    Puis je les supprime...et...tout recommence la semaine suivante !
    Que faut-il faire de plus ?

    • Bonjour

      Tu es sur quel type de modérations ?
      Tu as la dernière version du plugins ?

    • Guillaume Blanc

      J’ai exactement le même problème : la semaine dernière j’ai patiemment coché « spam » quelque 200 messages proposés. Là, je viens de recevoir 68 messages issus de la même adresse IP en 4h d’intervalle (et je pense que ça va continuer).
      J’ai NoSPAM 1.5.4
      interface forums 0.1.0
      SPIP 2.1.10
      Je suis en modération a priori pour éviter de polluer mon site...

      J’ai l’impression que le fait que je coche « spam » ne change rien, rien ne se fait automatiquement... Et faire cela chaque semaine sur des dizaines ou des centaines de messages, c’est... pénible ! Existe-t-il une solution ?

    • Guillaume Blanc

      Et ça continue : depuis 36 heures, plus de 320 spam provenant d’une même adresse IP et même adresse mail. Je fais comment pour surnager ? En plus ça masque les vrais commentaires ?

      Question subsidiaire : comment effacer définitivement tout ça pour éviter que ça ne prenne de la place sur le serveur ?

      Merci d’avance !

    • Bonjour

      Je verrais déjà à mettre à jour spip et tout les plugins.
      Ensuite, quelle ip est ce ?

    • Guillaume Blanc

      Je veux bien mettre à jour, mais j’ai quasiment la dernière version de nospam (celle de juillet) ; mettre à jour (version 1.5.5) va-t-il changer quelque chose ?

      Voici mon spammeur du moment :
      rabalybn@hotmail.com — IP 198.13.109.234

    • Hello,

      il ne faut *pas* supprimer les messages marqués comme SPAM : le plugin a besoin de les avoir en base pour s’y référer et comparer l’IP de celui qui laisse un message avec l’IP des messages précédents repérés comme SPAM.

      Par ailleurs, il y a normalement des dispositifs anti-flood qui bloquent les messages d’une même IP au delà d’un certain nombre dans les 5 dernières minutes, dans la dernière heure ou dans les dernières 2h. Mais possible qu’en envoyant un message toutes les 5 minutes le spammeur arrive à passer à travers…
      Je peux regarder avec la chronologie exacte, au cas où.

      Par ailleurs l’adresse IP que tu donnes est bien identifiée en SPAM compulsif par le dispositif de détection centralisée.
      Je suppose donc que ton site est hébergé par Free ou un autre hébergeur qui ne permet pas à SPIP de récupérer la liste des IP en blacklist, du coup tu ne peux pas bénéficier de cette fonctionnalité qui est la plus efficace.

      Dans ce cas il faut vraiment que tu conserves tes SPAM en base si tu veux avoir un peu d’efficacité.

    • Guillaume Blanc

      C’est bien ce que j’avais compris, mais actuellement, j’ai l’impression que le plugin nospam ne fait absolument rien. J’ai 2056 messages classés spam par mes soins, le spam continue d’affluer dans les messages proposés, je dois cliquer sur chaque message un à un, je ne vois donc pas où se situe le boulot du plugin ?

      Mon site est effectivement hébergé par free (snovae.free.fr). Comment récupérer la liste des IP en blacklist ?

    • L’objectif principal du plugin est d’éviter que les SPAM ne soient publiés, considérant alors que les spammeurs finissent par aller sur un autre site si aucun de leurs messages ne passent.
      Dans le cas où tu utilises la modération a priori il est en effet beaucoup moins efficace, car il ne passe en SPAM que les messages qui sont clairement abusifs (on ne veut pas perdre un vrai message).

      Il est plus méchant avec les IP détectées par le dispositif centralisé, car celui-ci est plus fiable (une IP vu sur N sites est de manière beaucoup plus certaine un spammeur), mais celui-ci ne peut pas marcher sur Free.

      Si tu mets le plugin à jour en version 1.5.6, tu peux néanmoins utiliser la detection centralisée en téléchargeant manuellement http://nospam.spip.net/spamsignal.api/list et en enregistrant le contenu dans le fichier tmp/spamsignal-api-list.txt de ton site.
      C’est un pis-aller mais on ne peut vraiment pas faire mieux chez Free.

    • Guillaume Blanc

      OK, merci.

      Dans mon cas, c’est donc plutôt le plugin d’admin des forums qu’il faudrait “améliorer”, en permettant par exemple de sélectionner plusieurs dizaines ou centaines de messages simultanément (parce que cliquer un à un sur les + de 300 spams pour dire que c’est du spam... !!), je suppose.

    • Ce point a été amélioré dans SPIP 3 qui permet de la modération par lots.
      Je t’encourage à mettre à jour ton site, car (sauf surprise) on ne fera plus d’évolution fonctionnelle sur ce point sur le plugin pour SPIP 2.

    • Guillaume Blanc

      Merci pour tes réponses très utiles. Je vais donc m’atteler à mettre à jour mon site.

    Reply to this message

  • christophe

    Bonjour et merci pour cet excellent plugin.

    Il me semblerait intéressant de disposer d’une page de configuration du plugin NOSPAM, qui comprendrait :

    a) Le choix entre 3 niveaux de protections :
    -  les messages suspects sont marqués comme spam.
    -  les messages suspects ne sont pas enregistrés.
    -  l’ajout de message est temporairement désactivé sur l’ensemble du site.

    b) Permettre de renseigner des expressions suspectes (filtrage sur mots clés). Cela éviterait d’installer le couteau suisse uniquement pour cela.

    c) Autoriser ou non l’utilisation de code HTML dans les forums (par exemple, pour éviter que l’URL d’un lien soit différente de celle affichée).

    d) Autoriser ou non l’utilisation de la blacklist d’IP (par exemple, dans le cas où l’hébergeur n’autorise pas SPIP a interroger le serveur de blacklist).

    Reply to this message

  • Mise à jour de la partie Protéger d’autres formulaires : découpage en deux paragraphes disctincts.

    Reply to this message

  • 1
    Guillaume Blanc

    Bonjour,

    Submergé par le spam dans l’interface des forums (je suis en modération a priori pour les éviter sur le site public), j’ai des milliers de messages qui attendent que je clique sur “supprimer ce message”... Pas très pratique. J’avais la version 0.7 de NoSpam, je viens de passer à 1.5.4 en espérant que ça améliore les choses.
    Je suis sous spip 2.1. Voici mon site : http://snovae.free.fr/

    Je voulais suivre vos conseil et installer forum_spip2, mais pas moyen : je l’ai unzippé et mis dans plugins/ mais je ne le vois pas dans l’interface d’administration des plugins ?? Que puis-je faire ?

    Merci d’avance.
    Guillaume Blanc

    • il faut aller dans le panel gestion des plugins > liste de plugins. et tu vois le plugin inactivé
      je viens de tester sur un spip 2.1.23
      cela fonctionne parfaitement

    Reply to this message

  • Christophe

    Merci énormément pour ce plugin qui fonctionne du tonnerre pour les forums...!

    Reply to this message

  • Bonjour,
    dans l’article est indiqué comment étendre NoSPAM à “formulaire de contact libre”.

    Comment l’intégrer à “formulaire de contact avancé” et aux formulaires de contact créés avec Formidable?

    Merci d’avance

    Reply to this message

  • Bonjour,
    C’est mon premier site avec forum et je découvre donc... les spams.
    Je suis particulièrement embêtée par la même adresse IP (46.246.52.191 pour ne pas la nommer) qui m’envoie tous les jours des messages en anglais avec des adresses d’expéditeurs construits à partir d’une série de lettres+4 lettres genre année en 1900+gmail.com.
    J’ai SPIP 3.0.10 [20422] et un plugin NoSpam à jour.
    Que faire de plus ? La déclaration de ces messages comme spams n’y change rien. Pourquoi ces messages arrivent toujours ? Puis-je ajouter une autre protection, et dans ce cas, laquelle avec Spip 3 ?
    Merci pour vos conseils.

    Reply to this message

  • 1
    Jean-Luc

    Bonjour,

    Le lien vers le plugin Gestion Forum est mort. Pourriez vous me dire où le télécharger, je n’arrive pas à le localiser via Google

    Merci !

    Reply to this message

  • Bonjour,

    Invasion de spam depuis vendredi... On les marque comme spam donc...
    Question peut on ensuite supprimer les messages spam ou faut il les laisser pour que nospam apprenne à les reconnaître ?

    Merci de votre aide !

    Reply to this message

  • 1

    Question d’un ignare: faut-il installer/utiliser le plugin Gestion Forum avec SPIP 3 ?
    Merci à ceux qui savent !
    Rigas

    • Salut, non le plugin gestion de froum est inutile en SPIP 3 car son interface est intégrée dans le core (dans plugins-dist/forum).

      ++

    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