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

  • Hello

    A moins que je me trompe, quand un message de forum est considéré comme spam, l’auteur de l’article reçoit quand même un mail... Cela serait-il débrayable ? Une évolution ?

    Répondre à ce message

  • josephtux

    Bonjour,

    je découvre ce plugin, à l’occasion de la découverte de 161 pourriels ( soutiens à une pétition de test ! ), datant de plus d’un an ( eh oui, après le test, je l’avais oublié ! ).

    j’ai installé le plugin forum, et le résultat, c’est que je n’ai plus accès à la gestion des forum !
    Pire, je ne parviens pas à utiliser la très modeste interface qui remplace pour marquer comme spam ces « soutiens » : je n’ai accès à rien..

    Comme un autre posteur sur ce forum, je n’ai trouvé aucune aide sur le plugin forum recommandé ici.

    Pour le moment j’ai donc désactivé ce plugin.

    Merci d’avance pour votre aide à un QI en baisse constante (l’âge, sans doute) !

    Répondre à ce message

  • 2

    Pour moi, j’ai toujours autant de spams, voir plus.
    J’ai pourtant bien activé mon antispam dans mon espace Plugging mais j’ai encore 6-8 spams qui arriv comme commentaires à mes articles par jour !

    Je vais essayer d’autres pluggings, qqun en a un autre à me conseiller ?

    • attention ! il faut installer aussi le plugin forum pour déclarer les messages indésirables comme SPAM.

      Comme cela NoSPAM « apprends » à les reconnaitres et devient de plus en plus efficaces.

    • A la base, le plugin n’empêche pas la soumission de message : je rappelle que le principe est de bloquer la publication des messages suspects. Ainsi les spammeurs ne parviennent plus à publier du contenu, et finissent par se désintéresser de ton site.

      Est-ce que les messages de spams sont publiés ou sont-ils bien modérés ? Si ils sont publiés, utilise-tu bien une version SPIP 2.0 ou supérieure ? Et effectivement tagguer les messages en SPAM qui passent au travers permet au plugin d’améliorer la détection des spammeurs.

      Cela marche très bien sur un site comme SPIP-Contrib qui était pourtant l’objet de plein de SPAM auparavant. Mais il faut être un peu patient, le bénéfice se fait sentir avec un peu de temps, pas immédiatement.

    Répondre à ce message

  • Merci beaucoup trés utile et indispensable !

    Répondre à ce message

  • 4

    bonjour

    je ne sais ou poser une question sur « interface gestion forum ». (si vous savez ou, suis preneur)

    soucis : quand il est activé , les commentaires postés a la suite des articles dans l’espace privé , sont enregistrés dans l’espace public. du coup , plus de forum pour les redacteurs.

    est ce que ca fonctionne normalement chez vous ?

    merci d’avance

    ps : suis sous spip 2.0.13 [16958]

    • Hello,

      Je viens de corriger le plugin interface de gestion des forums. UN message de l’espace privé qui est supprimé avec les cases a cocher devient privé/supprimé, et pas public/supprimé.

      Je ne sais pas si c’était ca ton pb, mais tu peux essayer de mettre à jour.

      Dis moi si des pb persistent.

    • salut

      j’ai mis a jour mais le probleme persiste : les messages postés au bas des articles dans l’espace privé sont enregistrés et apparaissent dans les commentaires publics (et pas du tout au bas des articles dans l’espace privé).

      en desactivant forum, et mettant un commentaire privé (il est bien enregistré en privé) , puis en réactivant forum , je vois bien la modif que tu as fait (le statuts est « privoff » quand je le supprime)

      tu peux mettre des commentaires en privé chez toi avec forum activé ?

    • tu peux mettre des commentaires en privé chez toi avec forum activé ?

      Ouep chez moi ca marche bien.

    • ok va falloir que je trouve d’ou vient le conflit (couteau suisse, autorité, version de spip...?).

      c’est bizarre cette histoire quand meme

      en tout cas merci

    Répondre à ce message

  • hello
    je comprends pas...
    on installe le plugin et il doit detecter tout seul un formulaire (pour moi c’est #FORMULAIRE_FORUM ) ?

    je suis sous spip 2.1.8... et il s’affiche rien..

    merci pour votre réponse

    Répondre à ce message

  • Bonjour,

    J’essaye de faire fonctionner NOSPAM sur un formulaire de contact personel, et je crois bien que ça ne fonctionne pas. Comment puis-je en avoir le cœur net ? Ou trouver l’information comme quoi mon formulaire est effectivement protégé ?

    Désolé pour la question naïve,
    Merci d’avance !

    Répondre à ce message

  • Salut,

    J’utilise NoSpam pour le formulaire ecrire_auteur, les forums sont par ailleurs désactivés.

    Existe-t-il un moyen de gérer les faux positifs dans ce cas de figure ?

    J’ai vu que les logs ne contenaient qu’une partie des messages, ceux-ci sont-ils stockés ailleurs ?

    Merci !

    Répondre à ce message

  • 2

    Bonjour,

    Merci pour ce plugin qui nous simplifie bien la vie.

    Un « japonais » a réussi à glisser un double « POST » après 6 mois de tranquilité et son message est passé sur le forum. Le modérateur modère et râle. J’ai mis à jour le plugin. Un peu de prévention ne ferait pas de mal, je parle pour moi évidemment.

    J’ai aussi installé Gestion forum qui va faciliter le travail du modérateur, lequel va devoir me dire merci ! Je rève ...

    A qui s’adresse le « signalement » ? Est-ce qu’il n’a pour seuls effets que la mise à jour de la base de données l’affichage en spam dans la gestion des messages de forum ou a-t-il des conséquences ailleurs ?

    Cdt.

    • Signaler les messages comme SPAM permet de repérer les spammeurs et d’être plus sévère avec eux : une IP ou un email qui a déjà envoyé du SPAM voit tous ses messages contenant un lien modérés par précaution.

      Il est donc utile de bien marquer en SPAM tout ce qui en est.

    • Quand vous écrivez :

      Signaler les messages comme SPAM permet de repérer les spammeurs

      on ne sait pas trop ce qui se passe ... Comme je ne m’étais jamais penché sur la question je croyais que NoSpam bloquait tout le spam et donc tout ce qui passait à travers était du à un « spammeur diabolique » ! Erreur naïve. Si j’ai bien compris, NoSpam trie les messages et met une étiquette spam dans le champ « statut » des messages de la table spip_forum. Tant que certains seuils ne sont pas atteints, ces messages sont enregistrés dans la base.

      Je surveillais ma base de données comme « le lait sur le feu » car notre hébergement était un peu limite et me valait des appels de l’hébergeur pour augmenter la taille de la base à prix d’or. Donc je nettoyais la base souvent pour en virer les spams très coûteux en espace sql. Et jusqu’à hier j’ai continué bien que notre hébergement soit aujourd’hui plus confortable. En regardant de plus près comment ça marche, j’ai compris que :

      -  il n’y a pas de liste des « spammeurs connus ». Ce sont les messages enregistrés dans la base qui sont explorés pour repérer les IP des messages marqués spam. Première conséquence, il ne faut pas nettoyer la base sinon on ne retrouve pas les « spammeurs connus ». J’ai des spams jp qui contiennent une longue liste de liens dans ma base, pour le moment, je vais donc effacer le champ texte des spams plutôt que l’enregistrement entier. Ce serait plus économique d’avoir une table spip_spammeurs_connus avec les IP et de pouvoir nettoyer la table spip_forum. En plus on pourrait facilement enlever de la liste une IP marquée d’infamie par erreur.

      -  toujours pour cette question d’espace sql, je trouve les limites 10 en 2 heures, et 30 en 1 heure, trop lâches. Je comprends que ce ne soit pas le cas pour certains forums très réactifs. En ce qui nous concerne, on a plus de spam que de messages utiles donc vu de notre côté ça peut vite ressembler à un bombardement malgré NoSPAM. Étant donné l’éventail d’utilisateurs un petit réglage serait utile.

      -  nos forums sont modérés a-priori pour éviter tout dérapage d’un visiteur. Donc, pour moi, je serais beaucoup plus sévère sur le nombre de liens (20) dans le texte pour ne pas avoir à modérer ce genre de message. On ne sait jamais ce qu’on va trouver derrière ces liens ou ces textes qui sont illisibles pour nous ... mais restent présents et actifs.

      Au moins, j’ai appris quelque chose. C’est toujours utile de comprendre les limites d’un système et en l’espèce j’ai vu que je réduisais fortement l’efficacité de NoSpam. Corrigez-moi et excusez-moi pour ce post un peu long.

      Merci encore

      Cdt.
      Henri

    Répondre à ce message

  • 2

    Bonjour,

    Ce plugin fonctionne-t-il sur un site réalisé en SPIP 1.9.2g ? Si non, peut-on trouver une ancienne version ?

    Merci d’avance

    • Bonjour,

      non, ainsi qu’indiqué dans les versions compatibles, ce plugin ne fonctionne qu’à partir de SPIP 2.0.
      Il n’y a pas de version antérieure, SPIP 1.9.2 ne disposait pas des points d’entrée nécessaires pour traiter intelligemment le SPAM.

      Le mieux est de mettre à jour SPIP.

    • Le mieux est de mettre à jour SPIP.

      Merci, je m’en doutais un peu. Mais cela va être toute une histoire avec un site pas mal bidouillé...

    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