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

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

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

    Répondre à ce message

  • Christophe

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

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

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

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

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

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

      ++

    Répondre à ce message

  • spipfactory

    du coup en regardant dans le plugin je lit

    // activer aussi le flag spammeur connu en cas de flood, meme si aucune detection spam jusqu’ici
    // on sera plus severe sur les liens dans ce cas
    // cas du spammeur qui envoie que des messages a 3 liens a haute frequence (passe a travers tous les filtres)
    // au bout du 5e message en <10min ou 10e en <30min on va moderer tout message avec un lien

    // si c’est un spammeur connu,
    // verifier que cette ip n’en est pas a son N-ieme spam en peu de temps
    // a partir d’un moment on refuse carrement le spam massif, le posteur devra attendre pour reposter
    if ($spammeur_connu)
    // plus de 30 spams dans les dernieres 2h, faut se calmer ...
    // ou plus de 10 spams dans la dernieres 1h, faut se calmer ...

    // si c’est un message bourre de liens, on le modere
    // le seuil varie selon le champ et le fait que le spammeur est deja connu ou non

    // seuils severises pour les spammeurs connus

    // verifier qu’un message identique n’a pas ete publie il y a peu

    // verifier que cette ip n’en est pas a son N-ieme post en peu de temps
    // plus de 5 messages en 5 minutes c’est suspect ...

    notre spammeur allemand passe a travers tous les filtre sur la petite pilule bleu me balance via la même IP journalière, change le lendemain.

    **modération : SPAM ou pas les adresses IP et email sont des données potentiellemnt personnelles. En outre, leur indication ici n’apporte rien.**

    ou alors filtrer sur des mots clefs, mais c’est dommage de remettre le couteau suisse rien que pour ça
    on filtre sur viagra ou sur une url poster dans le message

    mais ça je sais pas si c’est possible ..........

    @micalement

    >>>>
    >>>> si c’est la même IP pose une rêgle dans un fichier htaccess
    >>>
    > a part mettre un
    > Deny from 37.113
    >

    Répondre à ce message

  • 13
    Le Jaseur Boreal

    Bonjour,
    J’ai un soucis avec un spammeur qui utilise des adresses email trés multiples, sur de non moins multiples IP ( souvent le dernier chiffre change) semble-t-il domiciliées en suède.
    Depuis deux jours, c’est l’avalanche , qui ne semble pas se réduire malgré NoSPAM.
    Avez-vous une solution ?

    *modération : SPAM ou pas les adresses IP et email sont des données potentiellemnt personnelles. En outre, leur indication ici n’apporte rien.

    • Tout les messages sont bien classer en spam ?

    • Le Jaseur Boreal

      Oui,
      tous les messages sont classés en spam, et c’est bien.
      Avec une gestion « a priori » du forum. Ce qui est génant, c’est la masse des messages spam cachant quelques autres qui eux sont bons.

      J’ai l’impression que les attaques se font quelquefois sur une seule page article avec quelques jours plus tard une autre , et par l’entrée de commentaires filtrée à priori.

      Certaines adresses portent des domaines avec at xxxxxx.ru,
      Dans mes stats spip de visiteurs, j’ai de fait des visites uniques issues d’un grand nombre de sites russes . bizarre ?

      Merci de vos suggestions.
      Cordialement

    • Le Jaseur Boreal

      Bonjour,

      C’est l’avalanche,
      et c’est très génant car il faut manuellement déclarer les mauvais messages arrivés proposés à la validation, comme étant des spams, et ça bouffe le temps ...
      « Parfois il y a un bon message perdu au milieu des autres ... »
      Sur France Inter cet après-midi (14h-15h) ils évoquaient les nouveaux data-center installés en suède, il y fait plus froid pour économiser les énergies à refroidir les serveurs ... apparemment, certains les utilisent aussi pour déployer leurs spams ... "les spams qui venaient du froid", cela me rappelle un vieux film ... !

      Y a-t-il d’autres solutions pour simplement les empêcher de rentrer ?

      Merci de toute aide.

    • Très bon film cet « espion qui venait du froid »...
      Quand Pierre demande si les messages sont bien classés en spam c’est bien de savoir s’ils ont été détectés et classés tel quel (donc plus besoin de les signaler/déclarer manuellement...) Si c’est le cas, il ne faut surtout pas supprimer ces messages (les spipeurs ne sont pas comme ces espions qui s’entre-tuent) : cette base de messages indésirables est utilisée par NoSPAM pour apprendre à repérer d’autres similaires (ils font donc office de vaccin...)

      Pour ce qui est de « les empêcher de rentrer », ce n’est absolument pas du ressort de ce plugin : lui il aide à la gestion une fois qu’ils sont là (classés comme spam ils ne sont pas affichés et donc n’atteignent pas leur objectif...)
      Bon, certains mettent en place, sur le serveur, une politique d’adresse IP interdites (liste noire quoi) ; mais le problème c’est que d’une part on peut rejeter des « visiteurs normaux/inoffensifs » (le contraire de la raison d’être d’un site web) et que d’autre part certains se sont vu victimes d’une attaque en règle du serveur

    • Le Jaseur Boreal

      Bonsoir Gildas,
      Bonsoir Pierre,

      Merci de la précision, je n’ai pas été vraiment attentif à la demande précise de Pierre, la précipitation .... (car une fois classés en spam, l’onglet « proposés » n’apparait plus ),

      En fait NON les messages ne sont pas classés en spam.

      les spams arrivent dans la boite des messages « proposés » .
      C’est pour cela que je dois les déclarer en spam manuellement.

      Donc , ils ne sont pas reconnus comme spam en entrant ... malgré les liens externes, et il y a souvent des termes qui reviennent dans les messages comme par exemple :
      « casino »
      « online »
      « on_line_play_casino »
      « casino free »
      « casino_game »

      etc ...

      pourrait-on bloquer les messages qui contiennent le mot «  casino  » ?

      Copie ci-dessous.

      Merci de votre temps.

      Cordialement.

    • L’intendant zonard

      Bonjour,

      Je confirme le témoignage du Jaseur Boréal : ces derniers temps j’avais entre 50 et 100 pourriels sordides par jour, probablement de la même origine. Les plugins de gestion rendent heureusement cela bien plus rapide et agréable, mais vu les quantités, par prudence je m’astreignais à aller faire l’élimination de manière quotidienne, et ce n’est pas un travail bien agréable.

      Je pensais le plugin NoSpam capable de détecter automatiquement ces pourriels, mais cela n’est pas le cas, ou bien c’est qu’il en refusait quatre fois plus que ce que je devais enlever à la main, peut-être ?

      Et j’en viens à quelques remarques que j’espère vous trouverez constructives sur ce plugin dont nous attendons tant :

      -  il manque le rapport sur l’activité du plugin : s’il a supprimé des messages ou empêché des robots d’en poster, il y a de quoi en être fier, alors autant qu’il le dise, non ?
      -  il me semble qu’il est déontologiquement délicat de ne pas mieux annoncer dans le descriptif du plugin que les messages que l’on déclare comme SPAM sont centralisés aux auteurs du plugin. Car c’est bien le cas, n’est-ce pas ?
      -  peut-être que je n’ai pas assez cherché, mais je n’ai pas vraiment vu de changelog avec les versions qui se sont succédées ces derniers temps ; aussi on se demande si tout est OK, si le plugin est bien vivant et en capacité, grâce à ses développeurs, de tenir le défi.

      En tout cas merci,

    • Bonsoir Le Jaseur Boreal

      C’est étrange que les messages ne soient pas classés comme spam (même si cela n’enlève pas le travail car il faut quand même vérifier qu’il n’y a pas de faux positifs... et de faux négatifs... c’est pour ça que je précise que c’est une aide pour faire le tri automatique et non un outil pour empêcher/bloquer les messages non sollicités)

      Pour ce qui est de bloquer les messages contenant certains mots, je crois que le couteau suisse a une lame pour ça mais je n’utilise pas donc je ne saurai pas trop en parler.

      Pour ce qui est de bloquer des IP, ça peut se faire par .htaccess si c’est le serveur Apache. il y a des messages dans ce sens surr le forum...

    • Bonsoir L’intendant zonard

      Oui, le plugin est bien actif même s’il n’y a pas d’évolution subite remarquable. Les pourriels qui augmentent à un moment c’est normal comme dit la doc (au début il y a un comme un regain comme dit la doc et ensuite ils vont voir ailleur s’ils y sont) Je peux dire comme on dit souvent qu’en tout cas ca fonctionne chez moi...
      Pour ce qui est de signaler les messages, c’est déjà le cas même si ça ne passe pas par un rapport séparé qui serait inutile : c’est indiqué quand on va voir la gestion des messages (et l’interface de gestion peut être amélioré en installant le plugin recommandé dans la doc)

      Petite correction, les messages indésirables ne sont pas signalés aux auteurs du plugin mais consrevé pour apprendissage interne : la typologie des spameurs variant d’un site à un autre el les plugins de lazone essayant au maximum de respecter les sites rien n’est collecté pour être envoyé ailleurs

    • Bonjour

      IL me semble que si tu mets les message de ce visiteur en spam et que tu les supprime pas, Il sera bloquer.

    • Le Jaseur Boreal

      Bonjour,

      Le classement manuel des méssages indésirables en spam, ne freine en rien leur arrivée.
      Les spams issus du même visiteurs, par des adresses ip d’origine identique, avec des adresses email fabriquées probablement par un robot . Constatez par vous-mêmes.

      Pour ceux qui veulent étudier les adresses IP, les dates, je peux transmettre un tableau xls ou txt complet. Là je n’ai mis que les IP et dates de ceux entrés depuis le 13 avril (6 jours)

      Je vous met la liste de ceux des derniers jours fabriqués de la même façon que les autres, mais changement ce n’est plus la suède qui sert de terre de transit, mais ils proviennent directement de Moscou ..

      Dans chaque spam il y a minimum de un à plusieurs liens http ( 7, 8, 10, 12 ..),

      *modération : SPAM ou pas les adresses IP et email sont des données potentiellemnt personnelles. En outre, leur indication ici n’apporte rien.

    • Dans ce cas tu le bloque au parfeu ou via htaccess

    • Le Jaseur Boreal

      Bonjour,

      1. Comment faire pour bloquer au pare feu ?
      Spip a un pare feu sur son forum ? Là je ne sais pas faire dans spip.

      et

      2. Que faut-il ajouter sur le HTaccess pour bloquer une « IP-XX YY ZZ WW » dont on sait que ce seront des adresses qui commenceront par les quatre ou cinq premiers chiffres identiques , ex : « IP-XX YY ........... »

      merci des tuyaux

    • Le par feu et au niveau du serveur, il faut voir avec l’hébergeur.
      IL saura aussi expliquer pour le htaccess logiquement.

    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