Thématiques :

Protégez vos applications du Spam avec Akismet

Posé ici le lundi 06 octobre 2008 à 06:03 par Jay Salvat

Akismet

J'avais envisagé d'intégrer Akismet sur ce blog lors de son développement. Finalement, j'ai pensé pouvoir m'en tirer par quelques astuces anti-spam. Ca a fonctionner les 6 premiers mois, mais depuis peu, le spam ne cesse d'apparaitre dans les commentaires de ce blog me forçant à supprimer manuellement les messages indésirables. Fatigant.

L'article de ce matin "The Best Ways To Fight Spam" sur Nettuts ne pouvait pas mieux tomber et m'a rappelé l'existence d'Akismet. Qu'est-ce qu'Akismet ? C'est un web service créé par les développeurs de Wordpress qui permet de filtrer les messages de vos visiteurs et d'en extraire le spam. Ce service est efficace, gratuit et facile à intégrer. Je m'en vais l'essayer de ce pas. Voyons comment l'intégrer.

Le plug-in pour Wordpress est proposé par défaut, mais une page avec diverses solutions pour différents langages est également disponible. J'ai téléchargé "PHP 5 class by Alex".

Ensuite, il suffit de s'inscrire sur le site Wordpress pour obtenir la clé API. L'inscription est gratuite. La clé API l'est aussi pour un usage non-commercial. Elle vous sera envoyé par email quelques minutes après l'inscription.

La suite est simplissime, un petit bout de code à ajouter et le tour est joué.

Dans la page d'enregistrement des commentaires
if ($_POST) {
    // Quelques informations nécessaires
    $api_key  = "[ APIKey ]"; // Clé API délivrée lors de l'inscription
    $blog_url = "http://blog.jaysalvat.com/";
    $post_url = "http://blog.jaysalvat.com/articles/mon-article-avec-commentaire.php";
	
    // Appel du webservice Askimet avec les champs de mon formulaire de commentaire.
    include "/includes/askismet.class.php";

    $akismet = new Akismet($blog_url, $api_key);
    $akismet->setCommentAuthor($_POST['comment_author']); // nom de l'auteur
    $akismet->setCommentAuthorEmail($_POST['comment_author_email']); // email de l'auteur
    $akismet->setCommentAuthorURL($_POST['comment_author_url']); // url du site de l'auteur
    $akismet->setCommentContent($_POST['comment_content']); // texte du commentaire
    $akismet->setPermalink($post_url); // URL de l'article

    if($akismet->isCommentSpam()) {
        // Quoi faire si le message est considéré comme spam.
        // Logiquement l'exclure, ou le mettre en attente.
    } else {
        // Quoi faire si le message n'est pas du spam.
        // Logiquement l'enregistrer et l'afficher.
    }
}

Voilà. Bien évidemment cette solution peut être aussi utilisée pour des messages de forum, formulaires de contact, etc... Ce sera en production sur ce blog dans quelques jours. J'espère que le résultat sera à la hauteur de mes attentes :).

Les liens

Akismet

http://akismet.com/

Classe Akismet pour PHP5

http://www.achingbrain.net/stuff/php/akismet/

The Best Ways To Fight Spam sur Nettuts

http://nettuts.com/misc/the-best-ways-to-fight-spam/

Trackbacks

0 trackback

Commentaires

4 commentaires

On utilise pas isset() pour vérifier $_POST ?
C'est balèze tout ça mais est-ce que un robot peut arriver à accéder à du contenu d'un site nécessitant un pseudo/mot de passe (via inscription) ?
Je ne pense pas mais tout est possible avec eux.
Chouette astuce encore une fois !

1. Par Catar4x le lundi 06 octobre 2008 à 20:52

Bonsoir Catar4x,

Non $_POST ne se teste pas par isset() car il est toujours défini comme tableau (vide) par défaut. Il retournera donc toujours True sur un isset().

Oui, sur les applications les plus connues (Wordpress, PhpBB) les robots de Spam sont programmés pour suivre le processus d'inscription (inscription, réception d'email, validation, etc) pour se faire passer pour des utilisateurs.

Même les Captchas n'arrêtent plus les Spammeurs (Reconnaissance avancée de caractères ou social engineering).

2. Par Jay Salvat le lundi 06 octobre 2008 à 21:51

Ah oui, il est vrai qu'ils y arrivent sous PhpBB.
J'ai installé le script dans mon espace commentaire, il me reste plus qu'à le mettre dans le forum.
C'est bien plus pratique que la méthode Captcha (pour nous non-robot) !
Encore merci pour ta réponse ;)

3. Par Catar4x le mardi 07 octobre 2008 à 19:01

De rien :)

C'est installé ici aussi. Ca fonctionne bien pour l'instant. Déjà 2 spams bloqués. Espérons que ça dure. Aucune solution anti-spam n'est infaillible, les spammeurs sont malin, ont beaucoup de moyens et peu de scrupules.

4. Par Jay Salvat le mardi 07 octobre 2008 à 22:37

Obligatoire. Vrai nom apprécié.

Il ne sera ni affiché, ni spammé.

Votre blog ou votre site web.

Constructif, courtois et correctement écrit. SMS proscrit. Merci.