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 par date d’activité
137 discussions
J’ai un problème avec ce plugin sur mon site oweia.net, du coup je l’ai désactivé en attendant que cela se répare. En effet, les utilisateurs non enregistrés qui souhaitent écrire un message ont systématiquement ce message alors qu’ils écrivent plus de dix caractères :
« Attention ! votre message doit contenir au moins dix caractères. »
Est-ce que c’est arrivé à quelqu’un d’autre ? Est-ce qu’il y a un paramètre à régler ? Merci pour votre aide.
Répondre à ce message
Non, ça ne marche pas, et ce que j’entre une adresse Email ou non (j’ai à chaque fois vidé les deux caches). Vraiment désolé d’être porteur de mauvaise nouvelle. Je vais désactiver le plugin, mettre un de ces captcha peu pratique, en attendant une nouvelle version qui, peut-être fonctionnera sur mon site. Merci quand même, et je me réjouis de pouvoir ré-utiliser ce plugin, il a l’air vraiment sympa. ;-) A+
Je te rassure, ça marche partout, sauf chez toi ... Attendre que ça marche un jour ne résoudra donc rien.
- Utilise-tu un formulaire de forum personalisé ?
- Quelle est l’url de ton site pour que je regarde le formulaire généré ?
Répondre à ce message
Je le regrette, mais malheureusement ce plugin ne fonctionne pas pour moi. Quand je le test, il affiche ce message :
J’y inscrit une phrase banale, genre : « Salut, merci pour ce billet, je suis très content de connaître ce site ! », j’y inscrit un pseudo, et j’obtient le message ci-dessus, avec ou sans prévisualisation.
Quand je désactive le plugin, ça fonctionne très bien.
A noter que :
- le problème apparaît avec une modération a priori ou a posteriori ;
- j’ai désactivé le titre, la barre d’outils, et le lien hypertexte - serait-ce lié à cela ?
Si qqun a une idée, je suis preneur...
Vide le cache de SPIP, et, éventuellement, de ton navigateur.
Répondre à ce message
J’ai oublié de préciser que je travaillais avec spip 2.0.9.
Répondre à ce message
je dois pas être doué, mais je n’ai pas trouvé l’endroit où l’on déclare « SPAM » un message
Il faut utiliser le plugin forum qui permet de modérer finement les forums.
Je ne vois pas à quel plugin tu fais référence ?
Le plugin forum pour SPIP 2.0 est disponible en téléchargement sur http://files.spip.org/spip-zone/forum.zip
Il correspond à l’interface de modération des forums utilisées sur SPIP Contrib, et préfigure celle du plugin forum de la prochaine version de SPIP.
Répondre à ce message
Excellent, merci je cimmençais à désesperer de trouver un bon anti spam pour mon site
Répondre à ce message
Bonjour
La mise en route du plugin No-spam empêche l’utilisation du copier /coller dans le forum de notre site sous Spip 2.08
www.compostelle.fr.
D’autres ont-ils ce problème ? cordialement Bertrand
Répondre à ce message
ok
J’ai utilisé le #FORMULAIRE_SIGNATURE d’une part, et le #FORMULAIRE_ABONNEMENT avec le plugin spip-listes d’autre part.
En fait j’avais commencé à chercher des solutions de captcha quand j’ai vu que vous en aviez réalisé pour spip, ce qui m’arrangeait bien ! Je suis quand même assez débutante donc le bricolage, mieux vaut éviter si on peut.
Bon tant pis je vais retourner à mes recherches...
Merci pour tes réponses
Répondre à ce message
Pas encore puisque le site n’est pas sorti :-) c’est imminent.
Mais j’essaie d’anticiper : le sujet du site est sensible et je m’attends à tout.
Comme il y a un mail de confirmation au moment de l’abonnement ou de la signature, recevoir des inscriptions en (très grande) masse (par exemple) pourrait être problématique.
Donc ça veut dire que pour le moment je ne peux pas protéger ces formulaires ?
Non, ça veut seulement dire que le plugin NoSpam ne le fait pas pour le moment. Mais ça n’exclue pas d’autres possibilités.
Maintenant je ne sais pas comment est réalisé le formulaire d’abonnement, quel plugin le gère si c’est un plugin etc ... Donc je ne peux pas dire grand chose.
Répondre à ce message
Bonjour Cédric,
Lors de l’installation de spip 2.0.x on peut choisir son préfixe !
Mais dans la fonction function nospam_pre_edition faut il que je réadapte le préfixe spip_forum en monprefixe_forum ?
Merçi squirrel
Il ne faut jamais utiliser un autre préfixe que « spip_ » dans le code php de spip. « spip_ » est automatiquement modifié à la volée lors de l’execution des requêtes sql pour utiliser le préfixe qui a été déclaré lors de l’installation. Mais si tu mets directement ton vrai préfixe dans le code, alors ton code ne fonctionnera plus si tu change de prefixe.
Donc un substance, il n’y a rien à toucher pour que le plugin fonctionne sur toutes les installations de SPIP, quel que soit le gestionnaire de base de données utilisé ou le préfixe choisit à l’installation.
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 :
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.
Suivre les commentaires : |