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
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
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()
Discussions by date of activity
139 discussions
Bonjour,
le plugin marche généralement très bien, mais j’ai ce spammeur qui passe toujours à travers chaque semaine après des mois à signaler le même commentaire comme étant du spam. Y-a-t-il un moyen d’aider à bloquer ces messages? Je ne suis clairement pas le seul spip a être spammé, une recherche google avec le texte du commentaire entre guillemets retourne des dizaines de sites spammés...
Merci pour votre aide, et pour le développement continu de ce plugin si utile :)
Reply to this message
Bonjour
Un visiteur me signale que lorsqu’il veut envoyer un message dans un forum d’article, il a ce warning :
“Votre adresse IP est suspectée de procéder à du SPAM. Merci de confirmer votre bonne intention.”
En cochant la case “Ceci n’est pas un message abusif” il peut alors valider son message.
Comment faire en sorte que son adresse IP ne soit pas suspectée ?
Bon même avec une IP dynamique ça change rien (navigateur TOR) , on a exactement le même probléme
j’ai même regardé si le squelette utilisais des
<inclure>
je voie pas ou chercher d’autre
Reply to this message
Bonjour,
Lorsque j’active ce plugin, j’ai une erreur w3c (la seule du site ;) ) avec le div id=“give_me_your_email” qui est présent deux fois.
Je me demandais si il s’agissait du fonctionnement intrinsèque du plugin ou si il était possible de faire autrement.
Merci pour ce temps de développement passé au profit de la communauté !
Salut, ce n’est pas le comportement par défaut du plugin, donc ça ne doit pas venir de lui. Peux-tu nous donner l’adresse de la page en question pour qu’on tente de t’aider ?
Merci de ta réponse rapide.
Le site est en local pour l’instant. Je vais vérifier mes boucles, ça pourrait venir de là. Je l’ai déjà fait, mais j’ai dû passer à côté de quelque chose.
Si je ne trouve pas, je mettrais le site en ligne et repasserais par ici avec l’adresse.
Bonne journée !
Trouvé !
J’avais tout simplement un formulaire d’inscription sur la même page que le forum.
Et vu que j’étais connecté, je ne le voyais pas au début.
Et forcement, ça me faisait deux div id.
Désolé du dérangement pour rien !
Ha ok je vois le bug, content que tu aies résolu ton problème :)
c’est tout de même pas terrible que le plugin insère un hidden avec un id fixe comme ça. Cela peut poser problème dès que nospam se branche sur deux formulaires dans une même page. Il faudrait ajouter une variable à cet id pour éviter ce genre de pb.
Je confirme que c’est gênant. Dans mon cas, c’est un formulaire + un champ d’inscription à une newsletter. :/
Reply to this message
Bonjour
Sur un site (spip 3.2.19) avec NoSpam, lorsqu’une personne poste un message avec un lien, je dois valider ce message. C’est bien mais cela réaffiche le message sans aucun changement ni avertissement.
Donc la personne essaie de renvoyer son message (plusieurs fois parfois).
Comment faire apparaître un message du style “Votre message contenant un lien, il doit être validé par le modérateur”
Une idée ?
A noter qu’un autre site (spip 4.2.6) avec NoSpam également et sur le même hébergement, un message avec lien est affiché sans modération et je ne comprends pas pourquoi cette différence.
Hello
Une petite relance au cas où.
Reply to this message
Bonjour,
Je suis sur un spip SPIP 3.2.15, MailSubscribers 3.1.0 et NoSPAM 2.4.1, php 7.3.
Mailsubscribers fonctionne très bien, jusqu’à ce que j’active Nospam (v2.4.1), qui bloque alors totalement les nouvelles inscriptions : le message de confirmation d’inscription s’affiche, mais pas de mail envoyé ni d’inscription dans le tableau côté admin.
Une piste ?
Merci !
Bonjour, j’ai le même probleme, avez-vous trouvé une solution ?
Merci d’avance ;)
Reply to this message
Salut
Je viens de passer à SPIP 4.2.2 (j’étais sous le version 4..)
Je voudrais ré-installer NOSPAM
https://plugins.spip.net/nospam.html
Il n’est pas valide sous spip 4.2.2 alors que le site https://plugins.spip.net/ sous 4.2.2 indique qu’il l’utilise?
il existe une version compatible?
Pour ma part je l’ai activé avec le traditionnel
define('_DEV_VERSION_SPIP_COMPAT','4.1.0');
Et je n’ai pas de plantage
Salut
Où mets tu ce code?
Vu les nombreux tests effectués sur ce plugin en 4.2, et vu les avis favorables à son passage en marqué comme compat, la version 2.4.2 compat spip 4.2 va sortir sous peu (6 heures max, le tps que les bots se mettent à jour)
Super.
Merci pour tout ce boulot
Reply to this message
Bonjour Cerdic,
J’imagine qu’on ne réalise pas toujours tous les spams qui ont pu être arrêtés par le plugin... J’ai juste encore quelques soucis pour des mails non sollicités publiés à l’aide de formulaires de contact créés à partir du plugin Formidable qui s’appuie sur NoSpam pour traiter les indésirables...
Or, je dois souvent réajuster le filtre en ajoutant un mot ou une regex sur le comportement de chaque formulaire, ce qui est assez pénible. J’ai remarqué dans le plugin Le couteau suisse une lame qui permet aussi d’ajouter des filtres sur les formulaires de forum de Spip... Ne serait-il pas possible d’ajouter cette possibilité à NoSpam ???.... Juste une suggestion.... Si cela est possible.
Encore Merci.
Eric
Reply to this message
Veuillez mettre à jour le plugin vers SPIP 4.2.2, c’est très nécessaire.
Reply to this message
Bonjour,
J’ai le même problème depuis quelques jours sur un site.
C’est le formulaire de base contact qui est spammé (le seul accessible), donc ça n’arrive jamais dans l’espace public mais c’est pénible.
Il me faut ensuite aller enlever les auteurs un à un dans la base de données.
Je ne vois pas ce que je peux faire de plus en lisant le détail de ce fil, me trompé-je ?
Merci de votre aide.
@perline, vois les tout derniers messages. Bonne chance ! 🌷
PS
tu peux effacer les auteurs intempestifs en deux clics seulement ou presque si tu utilises, par exemple, Adminer : tu les affiches par salves de 500, tu coches ensuite la case la plus haute dans la première colonne (en vérifiant bien que tu n’as pas coché ainsi d’autres auteurs auxquels tu tiens) et tu cliques sur effacer.
S’il n’y en a que, disons, 200, tu affiches bien sûr une salve (nb max d’enregistrements à afficher) de 200.
Reply to this message
Bonjour,
Je crois avoir trouvé une parade provisoire efficace au spam de notre ami hongkongais qui multiplie les IP de provenance (soluce Deny IP caduque, donc).
Dans le fichier spip/plugins/auto/inscription_motdepasse[…]/inscriptionmotdepasse_pipelines.php,
juste sous :
Insérer :
Mon souci était de ne pas pénaliser mes vrais visiteurs hongkongais.
Je partage … en attendant mieux. 😊
c’est bien ce numéro qui est dans le champ nom de mes centaines d’inscriptions spam
au passage, sur mon site, il vient de recommencer hier avec une nouvelle IP 18.167.190.91
Mais bien qu’ayant vérifié plusieurs fois, je ne trouve pas le dossier “spip/plugins/auto/inscription_motdepasse[…]”
il me semble qu’il manque le nom du plugin ?
ce n’est pas nospam...
j’aimerai bien tester !
merci d’avance
pam
pam
Ah oui, @pam, j’avais oublié que ce plugin ne faisait pas partie de la dist. Sorry ! Il s’agit du plugin Mot de passe dès l’inscription.
Chez moi aussi c’est reparti depuis hier. Je reviens ici dès que j’aurai trouvé quelque parade. 😉
@oli
OK, je vais tester
mais tu dis “c’est reparti”... malgré cet ajout dans inscriptionmotde passe ?
il a changé de numéro ?
@pam Chez moi, oui... Je reviens très bientôt.
Voilà, j’ai complété mon insertion qui se présente ainsi désormais :
Il faut intégrer une succession de sinogrammes entre les guillemets qui entourent la valeur d’$indice2. Je ne l’ai pas fait parce que le formulaire de réponse de ce forum ne les acceptait pas 🤣
Pour ma part, j’ai mis les deux premiers sinogrammes saisis par le bot de notre ami dans le champ nom ; ces deux premiers signes semblent communs à tous les envois. Plus d’inscriptions intempestives depuis. Mais il est encore tôt. Je croise les doigts.
il s’était arrêté hier vers 13h, mais ca a recommencé ce matin
et en fait, il a changé la construction du nom dans le formulaire... il n’y a plus “645792927”... ca va être difficile de trouver une régularité à tester...
mais une regex qui teste le nombre de sinogrammes dans le champ ?
j’ai bien des lecteurs francophone en chine, mais ils ont des comptes écrits dans notre alphabet... et là on a des noms à rallonge, genre, traduit par deepl “Principaux légumes de conseil politique de Mifa 2hzyx.com, conseil Jincun, 100% plus compensation pour Ye Chenhua” ou “Vivre dans le village 88 du côté du pin, mille pins 216, pas d’eau courante, Kaiyun, élevage k667.net Fengchao Li”
donc si on bloque les tentatives avec un nom contenant plus de 10 sinogrammes, ca devrait le faire ?
bon, de mon coté, une regex de ce genre, ca va me demander une soirée au calme... peut-être qu’il y a des spécialistes ?
@pam, le second code que j’avais proposé teste si le nom de l’expéditeur contient le numéro de tél que tu sais (au cas où il serait réutilisé un jour) OU une suite de signes précise (en l’occurrence les deux premiers signes du nom que nous recopie justement @perline plus bas).
Dans tous les cas, ne pas comparer à la chaîne yx2hz qui change parfois, ni au nom de domaine (qq.com), bien sûr trop courant. Les deux premiers signes, par contre, semblent constants (pour l’instant).
Chez moi ça a marché : plus un seul spam depuis le moment exact où j’ai modifié spip/plugins/auto/inscription_motdepasse[…]/inscriptionmotdepasse_pipelines.php comme indiqué plus haut.
Bon courage ! 🌻
Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
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.
Follow the comments:
|
