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

  • 9

    On peut renforcer le filtrage en modérant d’office, a priori, tout message contenant :

    -  un attribut href
    -  un attribut style
    -  une balise <h1
    -  un attribut class
    -  voire n’importe quelle balise html (puisque les raccourcis SPIP les remplacent)
    -  au moins 3 liens

    • Sur mes forums (et ceux de forum.spip.org), la plupart des spammeurs emploient quelques tags ou attributs récurrents dont le filtrage ne gênerait amha absolument pas les visiteurs honnêtes: les attributs qui gèrent l’affichage. De manière générale, le visiteur n’a pas à fixer l’affichage dans le site qu’il visite. Je trouve par exemple:
      -  style=“display:none;”
      -  color:#LACOULEURDUFONDDELAPAGE
      -  position: suivi d’un chiffre en milliers de pixels

      Il me semble qu’interdire les attributs class et style serait logique.

      Pour les balises, on pourrait discuter: dans certains cas un copier coller de code existant peut se justifier (au moins après <code>).

      De manière générale, il me semble qu’une config pourrait permettre de gérer tout message contenant du html:
      -  passer d’office en modération a priori
      -  ou entraîner un report de publication de quelques heures.

      Cela pourrait pourrait être accompagné d’un message de justification et la config pourrait inclure un e-mail de notification général (comme dans le plugin notifications) car les auteurs réagissent de manière incertaine et il n’y a rien de plus frustrant pour un posteur loyal que de voir son message jamais publié par simple négligeance, ignorance...

    • oui il faut repérer les attributs class et style, mais il ne faut pas la faire à tort lorsque ceux-ci sont dans du code présenté dans un <code> ou un <cadre>

    • Je viens de croiser un exemple de message informant d’une modération préventive, en répondant à ce billet, par ailleurs édifiant : Un ou plusieurs commentaires attend(ent) d’être modéré(s), des mots spam ont été repérés.

    • Juste pour info, le filtrage des messages qui contiennent des éléments avec des attributs de style qui tentent de cacher le contenu (en dehors d’un extrait de code) sont maintenant marqués comme spam depuis la version 0.8.7 du plugin. Voici les commits qui ont apporté cette modification :

      http://zone.spip.org/trac/spip-zone/changeset/57157

      http://zone.spip.org/trac/spip-zone/changeset/57251

      http://zone.spip.org/trac/spip-zone/changeset/57276

      ++

    • Mist. GraphX

      Bonjour,

      J’ai testé la version 0.8.11 sur un site et j’arrive bien à me spammer tout seul ;-) sans que ce soit mis en spam automatiquement

      en utilisant :

      <html><a href="monsite_de casino_en ligne" style="display:none">Pour gagner , apprend a perdre</a></html>

      peut être qu’une page config : avec quelques options comme interdire l’utilisation du code serait plus efficace, car finalement peut de gens échange du code dans les forums proportionellement au nombre de site d’actu ou éditoriaux qui eux sont beaucoup plus sujet au spam vu leur contenu avantageux au niveau référencement ...

      l’autre chose que je trouve bizarre, c’est que en désactivant l’utilisation de la barre_typo, je pensais que ça interdirait l’utilisation de tout code spip dans le champ texte : ce qui n’est pas le cas et qui m’aurais pourtant paru logique (comme on dis pas de barre ... pas de chocolat ).

    • Rassure moi, tu n’étais pas logué quand tu as fait tes essais d’autospam ? ^^

    • ;-) ben non !!! lol

      j’ai vu que dans le code aucune vérif n’est faite quand ont est admin, et en plus j’ai Modération_modéré d’activé. ;-)

      en fait je suis tombé sur cette technique frauduleuse de par un spammeur qui apparemment connaissait le langage des balises spip et m’as gentiment fait de beau commentaire en utilisant et display:none

    • Retour, j’ai donc interdit et signalé par un message d’erreur quand la balise
      <html><!-- code --></html> était utilisée dans le texte d’un forum en ajoutant a nospam_pipeline.php dans la condition du formulaire forum (pour ceux interressés) :

      // si utilisation de la balise <html>
      $txt = _request('texte');
      $html = ",<html.*</html>,UimsS";
      if (preg_match($html,$txt)) {
                      $flux['data']['texte'] = _T('forum_attention_pas_de_code');
                      unset($flux['data']['previsu']);
              }

      et évidement le message dans le fichier lang ;-) désolé si c’est un peut bidouille, chuis pas une brute du php

      par ailleurs, je me demande pour ceux qui souhaitent laisser les liens se publier, si ajouter l’attribut rel=“nofollow” ne serait pas une bonne idée, car je pense que les spammeurs passent leurs chemin sur des liens qui ne sont pas suivis par les moteurs de recherche (pour les bots c’est pas dis, mais quoi que ...)

      et sinon dans un optique de modération a priori pourquoi, laisser rentrer des messages potentiellement classé comme spam, si c’est pour qu’un rédacteur se tape tout a valider, vérifier après ?? autant bloquer en affichant un message d’erreur (comme sur tout formulaire) ... comme ça le robot passe sont chemin, et le spammeur manuel (référenceur ça s’apelle ^^) doit faire preuve d’un peut plus de créativité et de délicatesse ;-)

    • Content que tu aies trouvé une réponse à ton besoin. Concernant les spams stockés en base, si tu regardes bien le code de nospam tu verras que ceux-ci permettent de repérer les spammers lors de lors tentatives de post multiples.

      ++

    Reply to this message

  • L’intendant zonard

    Ca se fait, faut le faire, je l’écris ici : j’ai installé le plugin, ça marche, merci. :D

    Reply to this message

  • 2

    Avec SPIP 2.1.12 et le plugin NOSPAM, je ne parviens pas à maitriser les spams sur une pétition. Sur un article j’ai une pétition (pétition activée et modération à priori) : cette pétition est l’objet de spams par centaines que je dois supprimer quasi tous les jours. Comment se fait-il que NOSPAM ne les bloque pas ?

    Je tiens à suivre la recommandation de ne pas utiliser un CAPCHA avec SPIP mais j’aimerais que NOSPAM soit plus efficace. Y a-t-il quelque chose que je devrais faire ?

    Merci pour toute info utile.

    • Salut, juste pour te filer un peu d’infos sur ce que fait nospam avec les pétitions :

      • si un lien dans le texte de la signature a un titre de moins de 3 caractères => spam
      • si le texte contient plus de trois liens => spam
      • s’il y a un lien dans le champ nom => spam

      Voilà le résumé, tout ceci se passe dans le fichier des pipelines de nospam ici :

      http://zone.spip.org/trac/spip-zone/browser/_plugins_/nospam/nospam_pipelines.php?rev=58663#L128

      Toutes ces conditions nécessitent peut être un ajustement ou l’ajout d’une nouvelle “barrière”. Quels sont les caractéristiques des spams qui “passent à travers” la barrière de nospam sur ton site ?

      ++

    • Les spams viennent quasi tous d’un serveur “enginecloud.net” avec un login toujours suggestif de pornographie et sans aucun commentaire.

    Reply to this message

  • Bonjour,
    J’ai récupére sous messages publics de l’article, bon nombre de messages identifiés comme (spam).
    Sur le site il yb a le bouton Valider le message mais rien pour le supprimer.
    Comment faut-il procéder ,
    Merci

    Reply to this message

  • Bonjour tout le monde,

    J’utilise NoSpam avec le plugin Guestbook 2.1, mais il y a toujours autant de spam. :( Les spams ne semblent être modérés, ils sont tous en statut “proposé”.
    En regardant le plugin Guestbook de plus près, tout ce qui est lié à NoSpam y est bien intégré (déclaration du formulaire, fonction vérifier)

    Il est indiqué que si les spams persistent, il faut les signaler à l’aide du plugin “Gestion forum” mais comment peut-on signaler les spams du plugin Guestbook ?

    J’ai fait de nombreuses recherches sur d’éventuels témoignages de l’utilisation du couple Guestbook/NoSpam mais en vain. Si quelqu’un a une petite piste, ou une explication (j’ai peut être zappé un truc au sujet de NoSpam ?), je vous en serai très reconnaissante. :)

    Merci d’avance.

    Reply to this message

  • Bonjour
    je souhaite gerer les spams via le plugin gestion forum et NOSPAM
    je vois bien le plugin NOSPAM mais gestion des forum est invisible dans la liste de plugins ?
    J’ai oublié quelque chose ?
    merci par avance

    Reply to this message

  • 2
    fchrysalis

    (suite)

    En fait, ces robots supposés ne se connectent pas trois fois par jours mais six fois, en général (je me trompais), et il doit être possible de repérer les sites touchés par des commentaires (non publicitaires et en anglais) qu’ils placent sur les sites sur lesquels ils ont jetés leur dévolu. J’ai d’abord eu droit à ce premier commentaire:

    It was a very nice idea ! Just wanna say thank you for the information you have shared. Just continue writing this kind of post. I will be your loyal reader. Thanks again =-=

    Il provenait de l’IP 81.25.45.63, située, je crois, en Biélorussie. Je l’ai effacé après avoir constaté qu’on en trouvait des dizaines de milliers d’exemplaires à travers le Web. J’ai alors eu droit, de la même IP, à ceci:

    I have to say, I dont know if its the clashing colours or the bad grammar, but this blog is hideous ! I mean, I dont want to sound like a know-it-all or anything, but could you have possibly put a little bit more effort into this subject. Its really interesting, but you dont represent it well at all, man. =-=

    Idem, ce message se trouve sur une grande quantité de forums, à l’identique (mais j’en trouve beaucoup moins aujourd’hui qu’à l’époque, en juin). Je l’ai gardé quelques jours. C’est depuis ce temps-là (16 et 17 juin dernier) que j’ai chaque jour quelques-uns de ces “robots” qui se connectent chacun six fois sur mon site.

    Très bizarre, non?

    • Il ne faut pas effacer les message de SPAM, mais les déclarer comme SPAM, cela permet ensuite au plugin de reconnaitre lorsque ce même utilisateur revient et d’être plus sévère avec lui (en lui interdisant tout lien par exemple, ou en modérant automatiquement ses messages par précaution).

      Quand aux visites automatiques sur ton site en provenance d’un même site, il s’agit de ce qu’on appelle du SPAM de referer (http://en.wikipedia.org/wiki/Referrer_spam). Si jamais tu affiche sur ton site public des statistiques concernant les visites ou les referers, cela permet au spammeur de récupérer automatiquement des liens vers son site.

    • fchrysalis

      Ah, merci beaucoup! Je ne connaissais pas ce genre de spamming (et il m’était difficile de le deviner vu que je ne publie pas de statistiques de visites). Et comme, pour moi, il ne s’agissait pas à proprement parlé de spam, je n’ai pas pensé à classer les deux commentaires comme “spam”. Cela dit, je doute que cela résolve le problème, car il doit y avoir plusieurs IP à l’origine de ces nombreux site...

    Reply to this message

  • fchrysalis

    Bonjour!

    J’ai depuis quelques temps le même problème que Pamillet, et je parie que ce doit être le cas de pas mal de monde! C’est effectivement essentiellement des “liens entrants” (“origine des visites”) en .ru, mais qui semblent venir de sites tout à fait ordinaires, en russe, traitant de n’importe quel sujet (d’après ce que j’ai pu en juger à l’aide d’un traducteur en ligne). Exemples: sedauka.ru, uadelo.ru, moykirov.ru, ournovosibirsk.ru... Les liens entrants se manifestent trois fois par jour en général. C’est donc très régulier et fait penser à l’action de robots. Mais il n’y a pas de spams, je suis déjà protégé par No Spam (et en suis satisfait). Alors, pourquoi ils reviennent? Qu’est-ce qu’ils font là? Et serait-il possible de les interdire d’accès?

    Sur de petits sites comme le mien, ayant peu de vrais visiteurs, ils rendent l’interprétation des statistiques mal aisée (et quelque peu déprimante), en plus d’utiliser inutilement de la bande passante...

    Si quelqu’un de compétent pouvait se pencher sur cette question qui, à mon avis, concerne pas mal de monde...

    Merci d’avance à celle ou celui-là!

    Reply to this message

  • une suggestion..

    je constate que des sites commerciaux, notamment pornos, se retrouvent dans mes statistiques et font grimper un article dans les statistiques (article sans rapport avec leur activité !)

    Ce n’est pas du spam... rien dans les forums, mais leur lien se retrouve dans les stats... et les pervertissent.. Et je me retrouve avec des dizaines de sites (presque tous en .ru) dans mes stats... Pourtant, rien de russe dans l’article...

    Serait-il possible de les bloquer, en tout cas de les exclure des stats ?

    ce n’est peut-être pas une question techniquement pour nospam... mais ca me semble relever du même besoin fonctionnel...

    Reply to this message

  • Bonjour,

    Merci pour ce plugin très efficace. :-)

    Je tente de déterminer si Spip est prêt pour l’IPv6. A priori, c’est bon pour Spip natif.

    Je m’interroge sur les plugins. Parmi eux, à ma connaissance, seul NoSPAM serait impacté : il utilise une fonction nospam_hash_env() qui, si je ne m’abuse, transforme les IPv4 de type aaa.bbb.ccc.ddd en aaa.bbb.ccc.XXX
    La compatibilité IPv6 est-elle «prévue», ou pas encore à l’ordre du jour ?

    PS : plus généralement, je n’ai pas trouvé de discussions/synthèse de l’impact d’IPv6 sur Spip et ses plugins. Si quelqu’un a des précisions à ce sujet, je suis preneur !

    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