Consigli utili per evitare lo spam nei Guestbook

SpamCon questo articolo darò una serie di consigli per evitare una piaga conosciuta da ogni webmaster: lo spam. Questo è uno dei problemi più noti per chi ha una casella di posta o un sito e può diventare la causa dell'insonnia di alcuni webmaster.

Cosa è lo spam?

Lo spam nei siti consiste nell'inserimento di messaggi spesso non desiderati, contenenti pubblicità, offerte per oggetti o materiale illegale, frasi senza senso o, più semplicemente, scritte per dare noia al proprietario del sito o a chi sta leggendo la pagina.
Su internet coinvolge tutti i CMS più diffusi (sia quelli open-source sia quelli a pagamento): lo spammatore inserisce il proprio messaggio dentro forum, shoutbox, nelle gallerie, nei commenti e in tutte quelle estensioni che permettono l'inserimento da parte di terzi. I CMS hanno tanti vantaggi, ma la loro popolarità porta ad essere deboli su questo: poichè sono molto diffusi è facile per gli spammatori riconoscere il CMS e utilizzare il modo ritenuto più opportuno per pubblicare "spazzatura". In generale, anche se il sito presenta delle difese contro di loro, gli spammatori riescono a eludere i captcha e i sistemi di protezione, spesso sfruttando i bug del CMS. Questo porta a non essere completamente protetti dallo spam ed è necessario, per i siti, effettuare un controllo periodico oppure utilizzare un sistema di segnalazioni (tramite email o messaggi all'interno del CMS). Il controllo e la pulizia dallo spam sono necessari, sia per rendere un sito efficace e visitato, sia perchè se gli spammatori vedono che non sono contrastati potrebbero continuare e, infine, alcuni hosting potrebbero eliminare componenti e pagine ritenute da loro dannose senza il permesso di chi ha creato il sito.

Il termine "spam" sembra si sia diffuso grazie a uno sketch della serie televisiva inglese Monty Python's Flying Circus, trasmessa dalla BBC tra il 1969 e il 1974. Lo sketch era ambientato in un locale dove ogni pietanza proposta e portata dalla cameriera era a base di Spam (un tipo di carne in scatola diffutosi, a causa del basso costo, dopo la seconda quella mondiale). La cameriera porta con insistenza i piatti con lo Spam (es. uova con Spam, salsicce con Spam etc etc) e la scena è caratterizzata dalla riluttanza del cliente verso questo tipo di cibo, alla quale però si contrappone un coro, a favore dell'alimento, da parte di alcuni Vichinghi seduti lì vicino. Questo tipo di carne in scatola era caratterizzato dalla frequenza con cui il prodotto veniva pubblicizzato e proprio per questo motivo è nata la "presa in giro" della Monty Python's Flying Circus e la conseguente accezione moderna.

Lo spam informatico è nato per le email: la prima email di spam della storia sembra sia quella del 1 maggio 1978 spedita dalla DEC (1) per pubblicizzare il loro nuovo prodotto e fu inviata a tutti i destinatari ARPAnet (2) della costa ovest degli USA. Ma, come detto in precedenza, attualmente lo spam non riguarda solo le email (in questo caso è conosciuto anche con il termine junk-mail, cioè posta spazzatura). Nel caso delle caselle di posta in tutte ci sono i filtri che rimuovono le email indesiderate dalla posta in arrivo, ma non sono perfetti e qualche volta l'email la troviamo lo stesso tra quelli in arrivo oppure viene spostata (o addirittura cestinata) un'email che in verità è "buona". Alcuni filtri simili sono stati creati anche per i siti, ma non sono altrettanto buoni e lo spam riesce a infettare le pagine web.

Ma perchè esiste lo spam? Chi sono gli spammatori?

In verità lo scopo dello spamming non è solo commerciale: a volte viene utilizzato per creare truffe, inganni o burle (basta pensare alle famose catene di sant'Antonio) o addirittura per distribuire “malware” o aggiungere link a pagine pericolose. Come per i virus, anche per lo spam i motivi possono essere diversi e non sempre conosciuti. Anche chi lo fa spesso è sconosciuto: basta pensare che uno spammatore può, in alcuni casi, riuscire a mantenere l'anonimato camuffando l'indirizzo ip o appogiandosi su tecniche che coinvolgono per esempio i server Tor (3). In molti casi gli spammatori non sono umani, ma spam robot che visitano in modo automatico e ripetitivo le pagine dei siti e lasciano messaggi indesiderati.

Alcuni consigli per proteggersi dallo spam

  1. il primo consiglio, fondamentale da seguire, è quello di tenere il sito sempre aggiornato. Nel caso di Joomla è sempre consigliato aggiornare all'ultima versione non solo il core del CMS, ma anche le estensioni installate: questo vale sia per la sicurezza del sito in sè sia per evitare, dove è possibile, lo spam.
  2. bisogna controllare se le estensioni che permettono l'inserimento di messaggi da parte di utenti hanno integrato qualche forma di prevenzione dello spam, per esempio dei captcha. Se non ce l'hanno dobbiamo controllare sul sito del produttore, su http://extensions.joomla.org/ o con un motore di ricerca se estistono dei plugin per l'estensione che permettono di integrarci sopra un captcha o qualcosa di simile. Se invece è già integrato bisogna configurarlo per bene. Se invece non esiste niente potrebbe essere integrato direttamente da noi, ma le modifiche nel codice del componente andrebbero perse ogni volta che lo aggiorniamo.
  3. consentire l'aggiunta di messaggi, se possibile, solo agli utenti registrati oppure pubblicarli sul sito solo dopo l'approvazione di un amministratore (che dovrebbe essere avvisato, per esempio tramite un'email automatica).
  4. controllare sempre da dove proviene lo spam. Spesso i messaggi provengono dello stesso indirizzo ip: in questo caso basta bloccarlo, per esempio modificando in modo adeguato il file .htaccess oppure installando un plugin ad hoc. Un'altra cosa da non dimenticare è questa: non è sempre detto che lo spam presente nel sito sia dovuto all'inserimento dal front-end, in alcuni casi gli spammatori potrebbero aver fatto accesso al back-end o addirittura al database e inserito direttamente da lì. Per controllare questo possono essere utili i log del server oppure reimpostare periodicamente le password di accesso.
  5. utilizzare dei componenti che permettono di fare dei filtraggi sul testo. Purtroppo questa funzionalità non sempre è presente.

Phoca Guestbook: un'estensione che lotta senza tregua contro lo spam

Qui vedremo un esempio di come possiamo configurare il componente Phoca Guestbook per impedire il più possibile il profilarsi di messaggi di spam.
Purtroppo non sempre la protezione è al 100%, però sicuramente in questo modo il tempo passato a cercare e eliminare messaggi indesiderati sarà notevolmente inferiore.

Ho preso come esempio un guestbook perché è la tipologia più infestata dal problema. Phoca Guestbook è uno dei guestbook più scaricati e purtroppo anche questo, come tutti gli altri, non ha una protezione totale contro lo spam. Con lo sviluppo delle nuovi versioni però sono stati integrati diversi tipi di captcha. Phoca Guestbook può essere scaricato da questo link. Attualmente esistono le versioni per Joomla 3.0, Joomla 2.5 e precedenti.

Per installarlo basta entrare nel back end del sito, andare su Estensioni-->Gestione Estensioni, caricare il file zip scaricato dal sito e cliccare su "Carica & Installa"). Il produttore fornisce anche la lingua: in questo caso abbiamo dei file da inserire nelle cartelle corrette. Fatto tutto questo per configurare e utilizzare il componente dobbiamo andare su Componenti-->Phoca Guestbook-->Pannello di controllo. Possiamo creare tanti guestbook diversi semplicemente cliccando su Guestbook e poi su Nuovo, mentre possiamo gestire i messaggi lasciati cliccando, a sinistra (se siamo su Joomla 3.0) oppure dal pannello di controllo (se Joomla 1.5 e 2.5), su Posts. Dalla pagina che si aprirà possiamo cancellare velocemente i messaggi indesiderati che purtroppo potrebbero arrivare, come in foto.

Phoca Guestbook è, come detto, tra i componenti per la gestione di un libro degli ospiti quello che permette di inserire delle protezioni diverse contro gli spammatori. Se infatti clicchiamo su "Opzioni" (è il pulsante che troviamo nel menù orizzontale del componente nel caso di Joomla 3.0 oppure in alto a destra dal pannello di controllo dell'estensione per Joomla 1.5/1.7 e 2.5) e poi su "Sicurezza" potremo (come vediamo nella seconda figura):
  • inserire l'elenco delle parole proibite;
  • scegliere la massima lunghezza dei caratteri;
  • scegliere il massimo numero di url inseribili;
  • inserire l'elenco degli url proibiti;
  • scegliere le azioni da effettuare nel caso ci siamo parole o url proibiti (possiamo farli pubblicare direttamente, revisionarli prima della pubblicazione oppure rifiutarli);
  • utilizzare HTML Purifier che, come è spiegato in questo articolo, pulisce il testo.
Cliccando invece su "Captcha" possiamo scegliere quale captcha (4), tra i tanti, deve essere presente nel form di inserimento dei messaggi del guestbook.
Su Phoca Guestbook sono presenti diversi tipi di captcha e nella configurazione possiamo scegliere se utilizzare solo parole e umani oppure semplici operazioni matematiche. E' possibile utilizzare anche il reCaptcha (progetto nato per il riconoscimento del testo dei libri antichi tramite l'OCR (5) e acquistato nel 2009 da Google), ma per poterlo integrare sul nostro sito è necessario essere iscritti su https://www.google.com/recaptcha e ottenere la Private Key e la Public Key.
Infine Phoca Guestbook ha anche una gestione degli indirizzi IP: possiamo inserire un elenco degli IP bannati oppure abilitare direttamente da lì alcuni plugin che permettono di controllare gli IP e lo spam da alcuni database presenti online, come StopForumSpamHoneypotBotScout.
Infine nella versione per Joomla 3.0, Phoca Guestbook presenta un pagina di log con tutte le azioni effettuate con questo componente, molto utile perché sono presenti dati in più rispetto alla pagina con l'elenco dei post, dati che potrebbero tornarci utili nella nostra lotta contro lo spam.
Se fate una ricerca sul nostro forum oppure con un motore di ricerca troverete un sacco di persone che, anche utilizzando questo componente, si ritrovano dello spam nel proprio sito, come in figura. Visto le grandi richieste fatte anche sul sito http://www.phoca.cz gli sviluppatori hanno deciso di dare questi consigli (alcuni dei quali già descritti sopra):
  • tenere sempre attivo il Captcha, i filtraggi con Askimet e HTML Purifier.
  • consentire l'inserimento di messaggi solo a utenti registrati e fare una buona politica di ban degli ip.
  • spesso il bot tenta di raggiungere il guestbook attraverso il link "standard" (quello non SEF) del componente, che tipicamente è ../index.php?option=com_phocaguestbook&view=guestbook&id=1. L'uno presente nell'url è l'id del guestbook e ovviamente, se è il primo ad essere creato, avrà quel valore. Quindi è consigliato impostare un valore diverso da quello e questo è possibile farlo dalla scheda "Sicurezza" delle opzioni di Phoca Guestbook. In questo modo i robot non riusciranno ad accedere alla pagina.
  • utilizzare il parametro Incoming Page (presente dalla versione 2.0.7 del componente) che controlla da quale pagina proviene il post: se proviene proprio dal guestbook il messaggio sarà pubblicato senza poblemi, altrimenti significa che c'è stato un problema di sicurezza.
Da come abbiamo potuto leggere, anche estensioni molto popolari soffrono la presenza di messaggi indesiderati,  ma è possibile limitarne il numero attraverso una manutenzione frequente e l'utilizzo di strumenti descritti prima.


(1) DEC = Digital Equipment Corporation.
(2) ARPAnet = Advanced Research Projects Agency NETwork, una rete di computer nata nel 1969 a partire da un progetto del Dipartimento della Difesa degli Stati Uniti e considerata come una prima bozza del moderno Internet.
(3) TOR = The Onion Router. E' un sistema di comunicazione nato per rendere difficile l'analisi del traffico e proteggere così la riservatezza delle comunicazioni e l'accessibilità dei servizi. L'architettura e il funzionamento di una rete Tor è, a livello teorico, semplice da capire: i dati che appartengono ad una qualsiasi comunicazione non transitano direttamente dal client al server (come avviene nella navigazione normale), ma passano attraverso dei server (chiamati proprio server Tor) che agiscono da router e costruendo un circuito virtuale crittografato a strati.
(4) CAPTCHA = Completely Automated Public Turing test to tell Computers and Humans Apart. E', come spiegato in questo articolo, un test dove si richiede a un utente di scrivere quali siano le lettere o numeri presenti in una sequenza di lettere o numeri che appaiono distorti o offuscati sullo schermo. Questo test (che può, a volte, essere composto anche da più domande) serve per determinare se l'utente sia un umano oppure un bot.
(5) OCR = Optical Character Recognition, cioè sistema di riconoscimento ottico dei caratteri per la conversione delle immagini contenenti testo e solitamente acquisite tramite scanner, in testo digitale modificabile anche con i normali editor.