SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

255 Plugins, 183 contribs sur SPIP-Zone, 176 visiteurs en ce moment

Accueil du site > Interactivité, échanges > Protections antispams > NoSPAM > NoSPAM

NoSPAM

20 novembre 2008 – par Cedric Morin – 135 commentaires

36 votes

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

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.

Par exemple, 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)

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.

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

Pour déclarer un message en SPAM, utiliser le plugin Gestion forum

Protéger d’autres formulaires

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). Ici, par exemple, on déclare le #FORMULAIRE_CONTACT_LIBRE :

  1. // proteger le #FORMULAIRE_CONTACT_LIBRE
  2. $GLOBALS['formulaires_no_spam'][] = 'contact_libre';

Puis on utilise les fonctions d’analyse de NoSPAM dans la fonction vérifier() de formulaire_contact_libre.php.

  1. include_spip('inc/texte');
  2. // si nospam est present on traite les spams
  3. if (include_spip('inc/nospam')) {
  4.         $caracteres = compter_caracteres_utiles($texte);
  5.         // moins de 10 caracteres sans les liens = spam !
  6.         if ($caracteres < 10){
  7.                 $erreurs['texte_message'] = _T('forum_attention_dix_caracteres');
  8.         }
  9.         // on analyse le sujet
  10.         $infos_sujet = analyser_spams($sujet);
  11.         // si un lien dans le sujet = spam !
  12.         if ($infos_sujet['nombre_liens'] > 0)
  13.                 $erreurs['sujet_message'] = _T('nospam:erreur_spam');
  14.         // on analyse le texte
  15.         $infos_texte = analyser_spams($texte);
  16.         if ($infos_texte['nombre_liens'] > 0) {
  17.                 // si un lien a un titre de moins de 3 caracteres = spam !
  18.                 if ($infos_texte['caracteres_texte_lien_min'] < 3) {
  19.                         $erreurs['texte_message'] = _T('nospam:erreur_spam');
  20.                 }
  21.                 // si le texte contient plus de trois lien = spam !
  22.                 if ($infos_texte['nombre_liens'] >= 3)
  23.                         $erreurs['texte_message'] = _T('nospam:erreur_spam');
  24.         }
  25. }
Retour en haut de la page

Vos commentaires

  • Le 20 août à 16:22, par Keev

    Bonjour,

    Tout d’abord, merci pour cette contrib.
    Quelques questions, car je ne trouve pas ces infos dans le descriptif ci-dessus :
    -  Y a-t-il des choses à paramétrer une fois le plugin installé ?
    -  Les forums inclus de base (partie publique) sont protégés d’office ?
    -  Le plugin "Gestion Forum" est-il un pré-requis ?
    -  Y a-t-il d’autres plugins qui constituent un pré-requis à celui-ci ?

    D’avance merci,

    Keev

    • Le 29 août à 22:46, par Keev

      Bonsoir à tous,

      Voici le message SPIP que j’obtiens en partie privée depuis l’installation du plugin “forum” dont il est fait référence dans cette page de présentation du plugin NoSPAM.

      1. 1       Filtre #URL_DOCUMENT non défini        ../plugins/forum/prive/listes/participer_forum_thread.html      _doc    36
      2. 2       Filtre #URL_DOCUMENT non défini        ../plugins/forum/prive/listes/participer_forum_thread.html      _doc2   68

      A noter que pour le moment je n’ai aucun message dans aucun forum.
      D’où vient l’erreur ?

      D’avance merci,

      Keev

    Répondre à ce message

  • Le 19 août à 11:45, par equipement

    Bonjour,

    Je constate que NOSPAM n’arrête pas le spam massif.

    J’ai posté plus de 20 messages (contenant chacun plus de 20 liens) en moins d’une heure et ils ont tous été enregistrés dans la table spip_forums.

    J’ai examiné le code de la fonction nospam_pre_edition et le problème provient de la ligne suivante :

    1. $spammeur_connu = !isset($GLOBALS['visiteur_session']['id_auteur']) AND (sql_countsel('spip_forum','(ip='.sql_quote($GLOBALS['ip'])."$email) AND statut='spam'")>0);

    il suffit de remplacer dans cette ligne ’id_auteur’ par ’statut’ pour résoudre le problème.

    En effet, lorsque l’on poste dans un forum, une session est crée avec en particulier dans le fichier créé dans tmp/session :

    1. $GLOBALS['visiteur_session']['id_auteur'] = 0;

    aussi comme cette variable globale est initalisée, la fonction isset (qui détermine si une variable est définie et est différente de NULL), renvoie la valeur true.

    • Le 19 août à 13:05, par Cedric Morin

      Bien vu, en effet. Je viens de corriger ce bug : http://zone.spip.org/trac/spip-zone...

    • Le 19 août à 17:02, par equipement

      Dans ce code de la fonction nospam_pre_edition :

      1. $spammeur_connu = !isset($GLOBALS['visiteur_session']['statut']) AND (sql_countsel('spip_forum','(ip='.sql_quote($GLOBALS['ip'])."$email) AND statut='spam'")>0);

      il me semble qu’en ajoutant une parenthèse au début et une parenthèse à la fin, cela évite que seul le premier élément du "AND" soit pris en compte.

      1. $spammeur_connu = ( !isset($GLOBALS['visiteur_session']['statut']) AND (sql_countsel('spip_forum','(ip='.sql_quote($GLOBALS['ip'])."$email) AND statut='spam'")>0) );
    • Le 20 août à 13:11, par equipement

      J’ai noté que la version 0.8.3 du plugin corrige ce bug.

    Répondre à ce message

  • Le 4 juin à 09:48, par Origenius

    NoSPAM... c’est-à-dire « NoJAP » ?

    Je me suis un peu cassé la tête pour comprendre pourquoi l’un de mes sites, exclusivement en japonais, n’acceptait aucun commentaires pour aucun article. J’ai cherché pendant plusieurs heures (mauvais code, problème de serveur, etc) jusqu’à ce que je décide de mettre à jour tous mes plugins avec leur dernière version : rien n’y faisait. Je les ai donc testés l’un après l’autre pour découvrir que seule la désactivation de NoSpam me permettait d’avoir accès à la publication des commentaires. Je m’interroge donc...

    Oui je sais fort bien et j’en suis le premier malheureux que des robots japonais tentent de pourrir nos commentaires au delà du raisonnable. Et c’est contre eux que j’ai voulu aussi protéger mes sites, d’où l’utilisation de NoSPAM. Mais quand le moindre et innocent caractère japonais se voit sans autre forme de procès rejeté, je me demande si la solution dite de « facilité » ne consiste pas pour ce plugin à jeter le bébé avec l’eau du bain ; quelques pourriels en japonais justifieraient-ils le rejet pur et simple de la langue japonaise dans les paramètres de ce plugin ?

    Ainsi, l’avantage multilingue pour lequel j’ai choisi SPIP prend un sérieux coup...

    Je joins à ce commentaire une petite copie d’écran faite sur ce site (spip-contrib) qui utilise fièrement ce plugin pour illustrer mon propos.

    Sayonara...

    PNG - 26.4 ko
    • Le 4 juin à 09:54, par Cédric

      Bonjour,
      le plugin ne repose absolument pas sur la présence de caractères type japonais ou autre pour détecter les SPAM, mais il semble qu’il y ait un bug sur le format d’une des expressions régulières, ou sur un traitement de chaine qui le fait ignorer ces caractères dans le comptage de la longueur du message.

      C’est bien un bug qu’il faut corriger !

    • Le 4 juin à 10:08, par Origenius

      Merci pour votre prompte réponse et vos précisions qui me rassurent ! Si mon commentaire peut permettre de corriger un bug, ce sera une maigre contribution de ma part.

      Pour compléter votre propos, il me suffisait d’écrire une dizaine de lettres latines pour que mon message puisse être prévisualisé et donc publié. Mais c’est ce que les commentateurs potentiels de mon site ne font jamais : ils écrivent dans leur langue maternelle... En conséquence, c’est peut-être simplement un problème de comptage de caractères comme vous le pensez.

      Toutes mes excuses pour ne pas vous avoir remercié pour votre travail dans mon commentaire précédent. Si je peux me rattraper, même maladroitement...

      Bien à vous

    • Le 19 août à 22:44, par Cedric Morin

      La version 0.8.3 du plugin corrige enfin ce bug. Désolé pour le délai.

    Répondre à ce message

  • Le 31 juillet à 23:33, par Kamran

    Hello,
    This plagin doesn’t work on my Farsi site. When I active it, I give this error :
    Warning ! Your message needs to be at least ten characters in length.
    The messages that I sent are more than 10 letters.
    I think it was the first version of the plugin, in file nospam_pipelines.php I changed "$texte = trim(preg_replace(’,[\W]+,ims’,’ ’,$texte)) ;" to " $texte = trim(preg_replace(’,[\W]+,uims’,’ ’,$texte)) ;" and it worked. But after that I upgraded the plugin and I couldn’t find the line in that fine. It is in file nospam.php. But still I have the same problem.

    PNG - 36.5 ko
    • Le 31 juillet à 23:42, par Kamran

      I use SPIP 2.1.1 [15871]

    • Le 19 août à 22:43, par Cedric Morin

      Version 0.8.3 of the plugin includes the correction of this bug.

    Répondre à ce message

  • Le 12 août à 18:17, par laurent

    salut a tous

    j’ai un petit soucis avec le plugin "suivi des forum" mentionné ici.
    j’ai cherché la contrib pour y poster le soucis, mais pas moyen de trouver.

    alors je m’en remet a vous.

    lorsque le plugin "suivi des forum" est activé, il n’y a plus possibilité de poster sur le forum d’un article en privé. les commentaires sont enregistrer dans la partie publique seulement.
    c’est peut etre simplement un choix de l’auteur, mais qui nous prive de forum privé sous les articles.

    pouvez vous m’orienter vers la contrib de ce plugin ou faire suivre pour modif.
    le lien vers la zone de ce plugin m’intéresserait aussi.

    merci d’avance.

    Répondre à ce message

  • Le 26 mars à 11:09, par Eric02

    Bonjour Cédric

    J’utilise le plugin "formulaire de contact avancé", juste pour confirmation, le formulaire généré par ce plugin est bien à protéger, comme tu le precise plus haut ou fait il parti des formulaire protégés de base ?

    Cordialement

    eric

    • Le 6 juin à 15:19, par Phil

      Salut Eric,
      -  Tu crées un répertoire "formulaires" dans ton dossier squelette (s’il n’existe pas).
      -  Tu copies le fichier contact.php (qui se trouve dans le répertoire "formulaires" du plugin) dans ce dossier "formulaires".
      -  Tu l’édites et tu colles le code ci-après après la ligne 136 je crois ($erreurs['nobot'] = 'Vous êtes un robot. Méchant robot.';)

      Le code :

           //Config pour le plugin NoSpam
           // si nospam est present on traite les spams
           if (include('./plugins/auto/nospam/inc/nospam.php')) //mettre le repertoire du plugin
                {
                        include_spip('inc/texte');
                        $erreurs['nom'] = 'Erreur pour verif';
                        $caracteres = compter_caracteres_utiles(_request('texte'));
                        // moins de 10 caracteres sans les liens = spam !
                        if ($caracteres < 10){
                                        $erreurs['texte'] = _T('forum_attention_dix_caracteres');
                        }
                        // on analyse le sujet
                        $infos_sujet = analyser_spams(_request('sujet'));
                        // si un lien dans le sujet = spam !
                        if ($infos_sujet['nombre_liens'] > 0)
                                        $erreurs['sujet'] = _T('nospam:erreur_spam');
                        // on analyse le texte
                        $infos_texte = analyser_spams(_request('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'] = _T('nospam:erreur_spam');
                                        }
                                        // si le texte contient plus de trois lien = spam !
                                        if ($infos_texte['nombre_liens'] >= 3)
                                                        $erreurs['texte'] = _T('nospam:erreur_spam');
                        }
           }
              //Fin config plugin NoSpam

      Chez moi cela fonctionne.
      Cordialement
      Phil

    Répondre à ce message

  • Le 31 mai à 22:32, par martin G

    bonjour,
    n’ayant que de très vagues notions en php, je trouve la doc assez sybilline :
    Afin de protéger le formulaire_abonnement du plugin Spip-Listes, j’ai inséré dans mes_options.php les lignes suivantes comme indiqué plus haut :

    1. // proteger le #FORMULAIRE_CONTACT_LIBRE
    2. $GLOBALS['formulaires_no_spam'][] = 'formulaire_abonnement';

    J’aimerais maintenant suivre la seconde partie des instructions ci-dessus mais le fichier formulaire_abonnement.php ne comporte aucune fonction verifier()

    Où dois-je insérer le code ?

    merci

    Répondre à ce message

  • Le 6 mai à 22:35, par bb

    Depuis quelques jours, les mails automatiques de spip (suivi éditorial et mail de contact) sont bloqués par mon serveur de messagerie (orange en l’occurrence). ces mails seraient identifiés comme porteur de spam.
    j’ai installé le plugin "nospam" mais ça ne résoud pas le problème.
    Auriez-vous un début de réponse à mon problème ?

    merci beaucoup

    • Le 6 mai à 22:47, par Cedric Morin

      Le plugin NOSPAM protège ton site des réponses abusives des robots dans les forums.
      Dans ton cas, il s’agit de ton fournisseur internet qui croit que SPIP est un spammeur, c’est donc le contraire.
      Je pense que ton problème sera résolu en configurant un expéditeur pour les mails :
      Menu "Configuration" > "Interactivité", cadre "Envoi de mails automatique" puis "Adresse email d’envoi"

    • Le 6 mai à 22:55, par bb

      Merci.
      Malheureusement, ça ne change rien.

    • Le 6 mai à 23:01, par Cedric Morin

      Il faudrait savoir sur quel critère ces mails sont identifiés comme spams ...

    • Le 6 mai à 23:23, par bb

      voici le message renvoyé :
      550 spam detected (in reply to end of DATA command)

    • Le 6 mai à 23:30, par bb

      je crois avoir trouvé la solution.

      dans le Menu "Configuration" > "Interactivité", cadre "Envoi de mails automatique" puis "Adresse email d’envoi", j’avais mis l’adresse mail que j’utilise en tant que webmaster. En y faisant figurer une autre adresse mail : tout fonctionne correctement et les mails automatiques ne sont plus bloqués par les fournisseurs internet.

      merci de ton aide

      Si quelqu’un a une explication rationnelle à ce pb, je suis preneur !

    Répondre à ce message

  • Le 3 mai à 10:01, par filnug

    Bonjour et merci pour ce plugin !

    Petite question : est ce que l’activation du plugin protège automatiquement les formulaires générés par le plugin FORMS&TABLES ?

    Merci

    • Le 3 mai à 16:29, par Cedric Morin

      Le plugin forms&tables intègre d’origine des mécanismes anti-spam qui le rendent peu sensibles à la soumission par robot.

    • Le 3 mai à 16:36, par filnug

      merci pour l’info !

    Répondre à ce message

  • Le 17 avril à 17:44, par jmax

    toujours plein de spam asiatiques alors j’ai essayé le plugin Gestion de forums avec le lien indiqué dans l’article mais cela fait planter l’interface :-(

    • Le 17 avril à 17:49, par Cedric Morin

      Tu utilises bien SPIP 2.0 ?

    • Le 17 avril à 17:54, par jmax

      gloups, spip 1.9.2c
      totalement désolé, j’étais pourtant bien sur

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Formulaire de contact avancé

    23 mars 2009 – 661 commentaires

    Un formulaire de contact configurable, avec de multiples options.

  • Bandeau

    16 août – 26 commentaires

    Et si on repensait la navigation principale de l’espace privé de SPIP ? Ce plugin permet de tester en situation réelle un nouveau bandeau de navigation pour l’interface de SPIP 2. Aussitôt activé, il remplace la navigation principale de l’espace privé (...)

  • odt2spip : création d’articles à partir de fichiers OpenOffice Writer

    6 mars 2009 – 91 commentaires

    Ce plugin permet de générer un article SPIP à partir du téléchargement d’un fichier OpenOffice Writer (format .ODT). Il gère la majorité des raccourcis typographiques, détecte les différents niveaux de titre et fait l’intégration des images (...)

  • SPIP-Immo : Présentation

    2 février 2009 – 26 commentaires

    Nous avons été amené à travailler pour plusieurs agences immobilières. A cette occasion, nous avons constaté qu’elles avaient toutes les mêmes demandes spécifiques liées à leur activité.

  • SkelEditor 2.0

    1er mars – 17 commentaires

    La version remaniée et enrichie du plugin, pour SPIP 2.1, qui vous permet d’éditer votre squelette directement en ligne sans passer dans le FTP Ce plugin vous permet d’éditer les fichiers du squelette courant depuis l’interface privé. Cela peut être (...)