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

Par exemple pour le plugin contact_libre, qui définit un formulaire de contact : la fonction ’vérifier’ de ce formulaire (définie dans le fichier formulaire_contact_libre.php) utilise les fonctions d’analyse de NoSPAM (définie dans le fichier inc/nospam.php du plugin nospam) :

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’internaute 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()

Notes

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

Discussion

137 discussions

  • Bonjour à tous,

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

    Un grand merci !

    Répondre à ce message

  • 2
    obiwanriko

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

    Répondre à ce 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.

    Répondre à ce 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.

    Répondre à ce 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 !

    Répondre à ce 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 ;)

    Répondre à ce 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.

    Répondre à ce 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 ?

    Répondre à ce message

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

    Répondre à ce 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).

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom