web-dev-qa-db-fra.com

Comment traiter le spam de commentaires à petite échelle sur de petits sites commerciaux?

Lorsque j’ai construit quelques sites pour des petites entreprises, j’ai toujours pu me passer de mesures anti-spam. J'ai maintenant plusieurs sites qui reçoivent entre 5 et 20 commentaires de spam par mois. Je l'ai défini, donc tous les commentaires doivent être modérés, ce qui n'est pas vraiment grave. Je dirais que c'est assez bon, sauf que le contenu de ces commentaires concerne souvent le Viagra, d'autres drogues, des sites pornographiques russes, etc., et j'ai l'impression que cela me fait du tort de voir ce contenu apparaître dans la boîte aux lettres de mes clients, dans la file d'attente de modération, etc. ..

Akismet pourrait sans doute aider avec beaucoup de ce genre de choses - mais je ne peux pas tout à fait justifier le prix.

J'essaie d'éviter les plugins excessifs ou les ballonnements, et j'estime qu'il devrait exister une solution simple pour cela: un plugin très maigre ou un extrait de code quelque part.

Des idées?

5
Zach Lysobey

Utilisez Antispam Bee . Il est gratuit, ne téléphone pas à la maison et fonctionne étonnamment bien tant que vous ne modifiez pas trop le formulaire de commentaire (vous devez le tester).
Assurez-vous simplement de désactiver la notification par courrier électronique pour les commentaires de spam. :)

5
fuxia

Je ne suis pas sûr de votre configuration, de vos ressources et/ou de vos connaissances. Mais voici certaines choses que vous pouvez essayer et qui ne nécessitent pas l’utilisation d’un plugin.

Vous pouvez essayer d'ajouter un nonce en plaçant l'un des éléments suivants dans le fichier functions.php de votre thème. Je ne les ai pas trouvées, je donnerais crédit à l'auteur si je pouvais me rappeler où je les ai eues. En outre, pour une raison quelconque, cela ne fonctionne pas tout le temps et empêchera les commentateurs légitimes de mon expérience (peut-être que quelqu'un d'autre peut commenter). Mais le voici:

// Add a nonce to the comment form for spam protection.
function add_comment_form_nonce_field( ){
  wp_nonce_field( 'anti_spam_nonce_field' );
}
add_action( 'comment_form', 'add_comment_form_nonce_field' );

function check_comment_form_nonce_field(){
  if( !wp_verify_nonce( $_REQUEST['_wpnonce'], 'anti_spam_nonce_field') )
    die('Security check failed');
}
add_action( 'pre_comment_on_post', 'check_comment_form_nonce_field');

Voici une autre suggestion:

// Add a nonce to the comment form for spam protection.
function wp_comment_check_hidden_field() {
        $user = wp_get_current_user();
        if ( !isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'],   "comment_form_{$comment_post_ID}") ) {
                do_action('comment_nonce_failed', $comment_post_ID);
                wp_die( __('Sorry, automated comments are not accepted.') );
        }
}
add_action('pre_comment_on_post', 'wp_comment_check_hidden_field');

function wp_comment_add_hidden_field() {
        wp_nonce_field("comment_form_{$post_id}", '_wpnonce', false);
}
add_action('comment_form', 'wp_comment_add_hidden_field');

Récemment, j'ai découvert un autre moyen d'arrêter les bots. Vous devez créer un cookie de session PHP, facile à utiliser avec php.ini ou via une variable .htaccess (php_value). La plupart des hôtes fournissent l'un ou l'autre.

http://php.net/manual/en/session.configuration.php

Une fois que vous avez confirmé que votre site crée le cookie de session, mettez ceci ou quelque chose de similaire dans votre fichier .htaccess racine.

RewriteCond %{HTTP_COOKIE} !^PHPSESSID=\w+ [OR]
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?example\.com/ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^wp-(comments-post|register)\.php http://example\.com [R=301,L,NS]

Remplacez exmaple.com par votre domaine. En outre, vous n'aurez peut-être pas besoin d'inclure wp-register.php en fonction de votre installation/version de WordPress (je viens d'inclure à la fois wp-login.php et wp-register.php pour empêcher les bots d'essayer de frapper l'un ou l'autre ). Cela bloque deux choses que les spambots n'utilisent généralement pas, mais que les visiteurs normaux devraient faire (ou dans le cas de l'agent utilisateur vierge qu'un bot ferait). Si vous êtes en Europe, je ne suis pas sûr que vous puissiez l'appliquer sans problème, car je ne connais pas bien la législation relative aux cookies, vous devrez donc peut-être supprimer la condition HTTP_COOKIE.

De plus, comme certains mots vous préoccupent, vous pouvez également utiliser la liste noire de commentaires intégrée à WordPress:

http://codex.wordpress.org/Combating_Comment_Spam#Comment_Blacklist

Mais vous devez faire attention aux mots que vous placez là.

1
MickeyRoush

Le plugin combo qui fonctionne pour moi et beaucoup, beaucoup d'autres: Akismet + Cookies pour Commentaires + (facultatif) Impostercide

Les meilleurs n'ont pas d'alternatives, donc si vous recherchez une alternative à Akismet , vous pouvez en trouver une aussi efficace contre le spam. Mais vous pouvez en essayer un:

NOTE: Si vous utilisez le plug-in Cookies for Comments , assurez-vous que ... ( POURQUOI ?)

  • votre contenu statique est servi à partir d'un sous-domaine différent si votre site Web est servi à partir de www.example.com. Et définissez www.example.com comme domaine du cookie en ajoutant ceci à votre fichier wp-config.php:

    define('COOKIE_DOMAIN', 'www.example.com');
    
  • votre contenu statique est servi à partir d'un domaine ou d'un sous-domaine différent d'un domaine différent, si votre site Web est servi à partir de example.com. Vous pouvez également faire de même si votre site Web est servi depuis www.example.com.

PS: Si j'étais vous, je n'activerais que les cookies pour les commentaires et verrais comment le plugin seul fait le travail. Il bloque tous les robots collecteurs de spam.

1
its_me