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

  • 19

    Personnellement je trouve l’idée de ce plugin très intéressante, je ne peux pas encore le testé car je n’ai pas encore migré mon blog vers Spip 2.0. Je pense néanmoins comme Benoît LAURENT, qu’une fonction qui permettrait de modéré automatique une adresse mail pourrait être utile, je suis en effet victime d’un unique spammeur qui est test@test.com, mais ses attaques sont loin d’être régulières (parfois plusieurs semaines entre 2 attaques) et n’affectent qu’un ou deux articles. En conséquence je ne pense pas que ces attaques seront bloquées. Quels sont les critères de nombre et de temps qui sont utilisés dans le plugin afin de déterminé ce qui est du spam et ce qui n’en est pas ?

    Merci d’avance

    • Benoît LAURENT

      Bonjour,

      La nouvelle version de banip comporte un filtre sur les adresses mail.
      Par contre il ne fonctionne qu’avec SPIP 1.9.2, si vous êtes en SPIP 2 il faut utiliser NoSPAM.

      banip V0.3 - INTRW

    • Bonjour à tous,

      ça fait 48h que j’ai installé nospam espérant voir les spams déjoués mais malheureusement rien est fait, ils continuent à infecter mon forum de plus bel. SVP si quelqu’un à une idée d’où ça peut provenir.

    • Bonjour à tous,

      ça fait 48h que j’ai installé nospam espérant voir les spams déjoués mais malheureusement rien est fait, ils continuent à infecter mon forum de plus bel. SVP si quelqu’un à une idée d’où ça peut provenir.
      Je suis sur spip 1.9.2d
      Voici l’ecran :

    • Bonsoir,

      NoSPAM ne fonctionne que pour SPIP 2.0 et pas pour SPIP 1.9

      Vous pouvez suivre le lien ci-dessous :
      banip - INTRW

      C’est moins évolué que NoSPAM, mais ça peut dépanner quant on est resté sous SPIP1.9

    • Bonjour
      j’ai les mêmes écrans pirates que vous, j’ai téléchargé nospam, activé le plug grace à la case à cocher , mais je ne sais pas comment le paramétrer, savez où cela se passe ?
      merci

    • Bonjour, il n’y a pas de paramétrage pour NoSPAM. Il a les réglages par défaut qui conviennent. Quelle version de SPIP utilise tu ?

    • pphilippe13

      j’utilise la version :
      SPIP 1.9.2d

    • Avez vous vu la mention compatibilité en haut de cette page dans la colonne du milieu ?
      C’est écrit « SPIP 2.0 », le plugin n’est donc pas fonctionnel avec les versions antérieures.

    • pphilippe13

      oups ! désolé ...
      Savez-vous quel plugin pourrait faire l’affaire ?

    • Il n’y a pas vraiment de bonne solution en version 1.9.x, je vous conseillerai plutot d’upgrader votre site.

    • Solution à base de filtrage d’adresse IP et de mail,
      banip peut rendre service à ceux qui reste en version 1.9 de SPIP.

      Le plugin a été récemment amélioré, le fichier d’adresse à banir utilise maintenant la notation CIDR.

    • pphilippe13

      Bonjour
      J’ai installé la version 2.0, comme vous me l’avez conseillé. Tout s’est bien passé, sauf que j’ai le formulaire d’inscription au beau milieu du site.
      je ne trouve pas la div concernée dans les squelettes de cette version.
      Pouvez vous me mettre sur la piste pour mettre en page ce formulaire ?
      D’avance merci
      http://www.vigneronsdeseve.org/

    • Le Couteau Suisse possède un outil paramétrable contre le SPAM qui fonctionne notamment sous SPIP 1.92.

      Cordialement

    • @pphilippe13 : Ça n’a rien à voir avec ce plugin, mais... pour repérer les dysfonctionnements de ta page, rien de tel que de la passer au validateur : http://validator.w3.org/check?uri=h.... Corrige d’abord les erreurs, t’y verras plus clair ;-)

    • pphilippe13

      Bonjour
      Merci pour cette réponse, d’autant que je ne vais pas repasser à la version 1.92, je dois résoudre mon problème !
      Ce que je ne comprends pas, c’est que je n’ai pas installé le plugin NoSpam, est-il livré d’origine avec la 2.0 ?
      merci

    • Non, aucun plugin n’est livré avec SPIP 2.0

    • Je viens d’upgrader mon site vers SPIP 2.0 et mon ancien plugin anti-spam n’étant plus compatible, j’ai été aussitôt envahi de commentaires spammy.

      J’ai donc installé ce matin le plugin NoSPam, et je pourrai rapidement vous faire un retour et vous dire si l’invasion a cessé ou non.

    • Je viens de migrer vers SPIP 2.0, et mon plugin antispam n’est pas compatible avec cette nouvelle version : résultat, invasion de commentaires spammy, bien que le forum soit modéré à priori.

      J’ai donc installé le plugin NoSPam ce matin, et je vous dirai si l’invasion a cessé ou non.

    • Il manque sans doute des id et des classes dans ton fichier seve.css (pas trouvé de classe formulaire_inscription par exemple), mais je te conseillerais de repartir de squelettes compatibles Spip 2.0 et de les adapter à tes besoins plutôt que d’essayer de corriger l’ancien.

    Répondre à ce message

  • 3 jours que le plugin NoSPam est installé sur feuxi.com et pour l’instant nouveau aucun spam alors que je supprimais 4 à 5 commentaires spammy par jour.

    Que du bonheur ;-)

    Répondre à ce message

  • Double post : excusez-moi... C’est que mon message était tronqué du fait de l’utilisation de guillemets...

    Répondre à ce message

  • Salut Cédric,

    Merci pour ce super plugin grâce auquel j’ai pu remettre des sites en forum sans modération. Une suggestion : ajouter un bouton « supprimer tous les messages » dans l’écran de gestion des forums en attente de validation.

    Au quotidien, je suis les choses avec « Notifications » et vérifie si les vrais messages sont bien publiés. Les autres, je les survole 10 par 10 puis, il faut hélàs les supprimer un par un. D’où la demande de bouton ;-)

    Encore merci !

    Suske

    Répondre à ce message

  • 4
    equipement

    Bonjour,

    Les différents mécanismes de protection utilisés par le plugin NoSPAM ressemblent étrangement à ceux qu’utilise Giseh depuis 2007. Hasard ou coïncidence ?

    • Bonjour,
      c’est documenté où ces mécanismes antispam de Giseh ?

    • equipement

      Plusieurs mesures ont été implémentées en 2007 dans Giseh (par mesure de sécurité j’ai masqué certaines informations par des pointillés) :

      -  Si un message a été rédigé en plus de ... minutes, le message n’est pas pris en compte et la phrase suivante s’affiche « La durée de la saisie du commentaire a dépassée la durée maximale de ... ». Un jeton périssable est utilisé à cette fin.

      -  Ne pas enregistrer un message envoyé sur un forum si plus de ... commentaires ont été postés dans les forums dans les ... minutes qui viennent de s’écouler.

      -  S’il y a plus de ... liens dans le texte d’un message envoyé sur un forum, le message n’est pas pris en compte et la phrase suivante s’affiche « Il y a plus de ... liens dans le texte ».

    • Dommage donc que ça n’ait pas été documenté quelque part, et/ou proposé sur une liste pour permettre à tout le monde d’en profiter !

      Il semble bien que j’ai plus ou moins refait la même chose dans mon coin, donc...

    • Ca marche hyper bien chez moi.

    Répondre à ce message

  • 2

    Je suis tombé sur un fatigant qui me met un petit message aimable sur mon forum (genre j’apprécie votre site ...) et me colle un lien commercial. C’est du travail à la main, mais cela se répète quelques fois par semqine à partir de la même ip.

    Serait il possible (dans une prochaine versoin) de déclarer manuellement cette ip pour que les messages qui en viennent soient modérées dans la logique du plugin ?

    Merci pour le boulot

    • Il suffit de mettre le message a la main dans les SPAM (avec le plugin forum, cf les échanges ci-dessous), pour que, dans la dernière version, ses prochains messages avec au moins un lien soient modérés automatiquement.

    • J’ai un bub dans le plugin forum : en dessous de chaque message, là ou je devrais certainement trouver des icones pour agir sur le message, j’au un espace vide qui affiche du code lorsque je suvole le message.

      {<:icone_supprimer_message:>,#URL_ACTION_AUTEUR{instituer_forum,#ID_FORUM-off,#SELF|ancre_url{forum#ID_FORUM}},'ajax supprimer'} {<:forum:icone_bruler_message:>,#URL_ACTION_AUTEUR{instituer_forum,#ID_FORUM-spam,#SELF|ancre_url{forum#ID_FORUM}},'ajax bruler'}

      Un probléme de compatibilité avec spipBB ou un autre plugin ?
      SPIP2.0.10

    Répondre à ce message

  • 1

    hi,
    i’ve performed de auto installation from private part, everything went well until a get this warning :

    Warning : Cannot modify header information - headers already sent by (output started at /var3/www/feministas/ecrire/inc/filtres_images_mini.php:834) in /var3/www/feministas/ecrire/inc/actions.php on line 214

    actions.php on line 214 : SPIP add a header, probably due to that the complain. How could i check if that warning also makes another undesired behavior ?

    Sorry i don’t write in french (the most similar language i write is catalan, does it help ?)

    thanks !

    • Hi,

      it seems you have extra (blank ?) line in your file /var3/www/feministas/ecrire/inc/filtres_images_mini.php as it should only have 833 lines.

      ?> can not be followed by more than one blank line, or it is sent to output, with then the error message you describe.

      Try to restore the original inc/filtres_images_mini.php.

    Répondre à ce message

  • Aprées quelques hésitation je crois que c’est fait. Plugin Forum n’est pas SPIPBB, j’espère que c’est compatible ...

    Pas dans les installations automatiques ... on s’habitue aux bonnes choses ;-) POurquoi ce plugin nécessaire est pas intégré dans l’autre ? On va bientot avoir des dépendances dans les plugins SPIP comme dans les paquets .deb ;- !

    Petites instabilités / hésitations liées au développement dynamique de notre CMS favori ... ;-)

    Je n’ai pas vu tout de suite là ou je pouvais changer le statut d’un forum, sauf quand j’ai suivi le lien correspondant à l’IP du fatigant. Mais pour une gestion ordinaire des forums je devrais chercher encore (ou désactiver le plugin en dernier recours).

    On va voir si çfa marche bien car mon fatigant semble bien connaitre SPIP, ses commentaires sont faits à la main et je crois que ses liens sont faits dans la fenêtre ad-hoc du formulaire de forum. C’est bien toujours à son IP que je voudrais le reconnaitre.

    Répondre à ce message

  • psychojam

    Bonjour,

    J’ai install nospam sur un spip 2.0.9, « Unable to take account of your message. Thank you to resubmit ! », j’ai lu sur un message que quelqu’un à eu le même problème que moi.

    J’ai essayé tout ce que tu as dis sans résultat.

    Par contre moi j’ai personnalisé le squelette du forum (pas le formulaire) juste « forum.html », donc je pense que je dois faire quelque chose de particulier dans mon squelette ? mais quoi ?

    Autre question, quand je désactive le squelette forum.html, ça remarche normalement, je peux posté une réponse, par contre en 15 secondes j’ai pu envoyé trois fois le même message est-ce normal ? (j’étais connecté avec un profil qui ne peut pas administré, un utilisateur standard).

    Merci d’avance pour votre réponse.

    Répondre à ce message

  • 6

    Bonjour,
    j’ai été victime soudain de spam (1 message automatiques avec ip différente toutes les 5 minutes et ce, un seul article est visé). l’installation de nospam a tout de suite remédié au problème.., mais il n’y a pas de console à gérer ????? je ne vois rien dans les configs... et apparement je ne suis pas seul dans ce cas.

    Si mon problème de spam est bien réglé, j’ai par contre maintenant un nombre de visiteur anormalement élevé et ce toujours sur l’article qui était spamé auparavant, ce qui fausse complètement les statistiques... (cet article est passé de 10 visiteurs jours à près de 500/jours comme ca, du jour au lendemain) si je désactive le nospam, de façon immédiate et régulière, des messages s’incruste sur cet article pré cité)..... des idées ???

    • Pour la gestion avancé des forums et du status SPAM, il faut utiliser le plugin http://files.spip.org/spip-zone/forum.zip disponible à l’adresse http://files.spip.org/spip-zone/#forum.

      Ce plugin n’est pas encore documenté, mais il ne fait qu’installer une nouvelle interface de gestion des forum.

    • Bonjour,

      J’ai installé le plugin pour gérer le spam depuis le suivi des forums et un petit truc bizarre se passe :

      Dans l’onglet « Messages publics » > « Tous », sont comptabilisés les messages internes de la messagerie perso (voir doc joint où 3 + 1 = 7)

      En y regardant de plus près, il s’agit seulement des réponses à des messages privés, les messages « racine » ne sont pas affichés.

      cela est peut-être lié au dysfonctionnement de la messagerie interne ? (l’avertissement de réponses aux messages « Vous avez un nouveau message » n’est pas affiché sous le menu...)

      merci en tout cas pour ce plugin

    • en testant sur un autre spip (toujours en 2.0.9), le souci que je retrouve c’est que « Messages publics » > « Tous » liste les messages privés... (uniquement les réponses)

      pas très privés comme messages non ?

    • La gestion avancé et non documentée des forums(http://files.spip.org/spip-zone/#forum) ne marche pas chez moi (spip2.0.9). La liste des messages et le tri selon le statut marchent au poil. Mais quand je survole un message, plutot que de me laisser le choix de changer le statut (comme je suppose qu’il devrait faire) il m’affiche du code :

      {<:icone_valider_message:>,#URL_ACTION_AUTEUR{instituer_forum,#ID_FORUM-publie,#SELF|ancre_url{forum#ID_FORUM}},'ajax valider'}
      {<:forum:icone_legitimer_message:>,#URL_ACTION_AUTEUR{instituer_forum,#ID_FORUM-prop,#SELF|ancre_url{forum#ID_FORUM}},'ajax bruler'}

      en dessous du message...

    • Il faut utiliser le plugin Bonux, et faire un &var_mode=recalcul sur la page où les boutons ne fonctionnent pas pour que le squelette soit recompilé et que les boutons apparaissent en lieu et place du code.

    • merci ! il a aussi et surtout fallu que je mette bonux a jour (j’avais une version vieille de 6 mois et du coup ca ne marchait pas)

    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