Antispam per moduli e blog. Bloccare lo spam con Akismet e PHP
Introduzione:
Uno dei più grandi problemi di internet è lo spam, in continua evoluzione. I programmatori tentano sempre di ideare nuove soluzioni per evitare lo spam, ma gli spammer sembrano riuscir sempre a scovarvi l' inghippo e superare i filtri e le protezioni. Prima lo spam via email, poi quello sui forum, e, ora che sono in largo uso, sui blog. Chi ne possiede uno infatti si sarà trovato o, ahimé, presto si troverà, a dover fronteggiare commenti di spam in numero esponenziale. Ciò causa l' abbruttimento del blog e, da un punto di vista prettamente tecnico, l' intasamento del database, che dopo qualche settimana si riempirà fino all' orlo di commenti-spazzatura, rendendo il blog lentissimo. Come risolvere? La soluzione, per i blog basati su piattaforma WordPress (la più diffusa), è il plugin Akismet.
Come funziona Akismet?
Akismet è un plugin che analizza i commenti, filtrandone quelli di SPAM. Quando viene inviato un commento, WordPress invia tramite comandi HTTP standard il contenuto di questo ad Akismet, che ne analizzerà il contenuto, decidendo se si tratta o no di spam. E' straordinariamente efficiente, riuscendo a bloccare gran parte delle tecniche utilizzate dagli spammers. Ma grandiosa è la sua capacità di "imparare dai propri errori": nel caso non abbia bloccato un commento di spam, e noi admin lo cataloghiamo come tale, Akismet da quel momento in poi capirà che messaggi di quel genere sono da considerarsi spam.
Usare Akismet:
E' molto semplice da usare, basandosi quasi totalmente su chiamate REST, e richiedendo, per inviargli le richieste, unicamente l' utilizzo della funzione fsockopen(). Vediamo quindi un esempio che mostri il funzionamento-base del servizio Akismet (perchè tutto funzioni è necessario scaricare questa classe e munirsi della propria API key, richiedibile dal sito Wordpress.com):
<?php
include ('Akismet.class.php');
// Creo un' istanza dell' oggetto, e gli passo l' URL del sito e la API key
$akismet = new Akismet('http://www.webmasterpoint.org', '[TUA API KEY QUI]');
$comment = "Hi!
I really like your website
<a href="http://www.viagra-today.com">Buy Viagra</a>";
$akismet->setCommentAuthor('Buy my viagra');
$akismet->setCommentAuthorEmail('viagra@casino-now.com');
$akismet->setCommentAuthorURL('http://www.buy-viagra.com');
$akismet->setCommentContent($comment);
if($akismet->isCommentSpam() == true) {
echo 'No spam, via!';
} else {
echo 'Grazie per il commento, ciao!';
}
?>
Analizziamo il codice sopra-riportato: innanzitutto, è stata creata una nuova istanza della classe Akismet, ed in seguito le è stato passato l' URL del nostro sito e la nostra API key. In seguito, sono state impostate alcune proprietà che possono esser contenute nei commenti postati da qualcuno, ad esempio buy Viagra, casino's. Infine, è stato usato il metodo isCommentSpam() per controllare se Akismet ha catalogato il commento in questione come spam. E' disponibile la demo dell' esempio che abbiamo appena analizzato.
Vediamo ora come fare a far imparare Akismet dai suoi errori. Useremo una classe composta da due metodi: il submitSpam() , per taggare un commento come spam, che mostriamo in questo esempio:
<?php
include ('Akismet.class.php');
// Creo un' istanza dell' oggetto, e gli passo l' URL del sito e la API key
$akismet = new Akismet('http://www.webmasterpoint.org', '[TUA API KEY QUI]');
$comment = "Hi!
I really like your website
<a href="http://www.viagra-today.com">Buy Viagra</a>";
$akismet->setCommentAuthor('Buy my viagra');
$akismet->setCommentAuthorEmail('viagra@casino-now.com');
$akismet->setCommentAuthorURL('http://www.buy-viagra.com');
$akismet->setCommentContent($comment);
// Lo marco come spam
$akismet->submitSpam();
?>
Ed il submitHam(), usato per taggare un commento come non-spam. Come è facile intuire, l' utilizzo è lo stesso che per il precedente:
<?php
include ('Akismet.class.php');
// Creo un' istanza dell' oggetto, e gli passo l' URL del sito e la API key
$akismet = new Akismet('http://www.webmasterpoint.org', '[TUA API KEY QUI]');
$comment = "Hi!
I really like your website
<a href="http://www.viagra-today.com">Buy Viagra</a>";
$akismet->setCommentAuthor('Buy my viagra');
$akismet->setCommentAuthorEmail('viagra@casino-now.com');
$akismet->setCommentAuthorURL('http://www.buy-viagra.com');
$akismet->setCommentContent($comment);
// La marco come non-spam
$akismet->submitHam();
?>
Conoscendo queste due cose, siamo ora in grado di aiutare Akismet nella sua azione di filtraggio-commenti.
Conclusioni:
Akismet è, a detta di tutti, il più completo, il miglior, antispam attualmente sul mercato. E' scaricabile gratuitamente da qui, mentre, se si vogliono avere maggiori delucidazioni sul plugin, invitiamo a consultare il developement center.
- Articolo precedente Introduzione al file .htaccess: a cosa serve?
- Articolo successivo Comprimere le pagine dei siti web e aumentare la velocità di caricamento con Apache e mod_deflate