Proteggere l’indirizzo e-mail: come evitare lo spam

La pubblicazione dell’indirizzo e-mail sul proprio sito web è un obbligo non scritto del gestore della pagina nei confronti dei suoi visitatori. Invitando il cliente a prendere contatto via mail in caso di richieste o suggerimenti, il gestore trasmette disponibilità e professionalità. Tuttavia, l’esposizione in rete dell’informazione di contatto nasconde in sé il pericolo di rimanere vittima di attacchi di spam. E questi non solo sono fastidiosi, ma alle volte formano, sotto forma di attacchi di phishing, un rischio in termini di sicurezza da non prendere sotto gamba. Lo stesso vale anche per programmi dannosi che i cyber-criminali amano nascondere negli allegati delle e-mail.

Ma è giusto fare di necessità virtù: in rete, infatti, i gestori di siti web possono trovare diversi trucchi per limitare l’accesso alla casella di posta elettronica degli spambot, ovvero quei programmi sviluppati appositamente per la raccolta di indirizzi e-mail da Internet con l’obiettivo di realizzare liste di destinatari a cui inviare posta indesiderata. Presentiamo i metodi più popolari, mettendone in luce i relativi vantaggi e svantaggi.

E-mail harvesting: come gli spambot vanno a caccia di prede

Per e-mail harvesting (in italiano: “il raccolto di e-mail”) si intende l’acquisizione automatica di indirizzi di posta elettronica per scopi pubblicitari disonesti, attacchi di phishing oppure la diffusione di software dannosi. Solitamente avviene con il supporto da parte di un software. In aggiunta, esistono programmi specializzati, i cosiddetti “e-mail harvester” o raccoglitori di e-mail, i quali esplorano siti web, mailing list, forum su Internet oppure piattaforme social media, alla ricerca di indirizzi di posta elettronica. Le indicazioni riguardanti le informazioni di contatto tanto ambite sono fornite dalla caratteristica sintassi alla quale corrispondono tutti gli indirizzi e-mail.

E in questo modo dei semplici modelli di ricerca sondano il codice sorgente di un sito web, utilizzando come carattere chiave la “@”. Questo perché di norma la chiocciola non ricorre in testi normali ma è invece sempre associata a un indirizzo di posta elettronica, in cui il suo ruolo è quello di separare lo user name dal dominio. Nemmeno altri metodi di rendere questo carattere portano a una protezione elevata: gli spambot più astuti, infatti, includono nella ricerca anche metodi alternativi di scrittura in uso, come possono essere [at], [AT], (at), (AT) o le varianti con “à” o “d”:

utente@dominio.it

utente[at]dominio.it

Se a seguire il simbolo @, o eventualmente il suo corrispondente in lettere, sono due stringhe separate da un punto, allora per gli harvester è un chiaro indizio che si tratti di un indirizzo e-mail. Neppure la trascrizione del caratteristico punto prima del dominio di primo livello offre una protezione rilevante, e, anzi, finisce per rendere più difficoltosa la leggibilità:

utente[AT]dominio[PUNTO]it

Ancora più traditore del carattere @ è il rimando dell’HTML all’e-mail nello schema “mailto:utente@dominio.it”, il quale fa sì che i visitatori possano aprire con un solo click il proprio programma preferito di casella postale elettronica. L’indirizzo del destinatario viene copiato automaticamente nell’apposito campo: il che risulta apparentemente pratico, tuttavia va a segnalare allo spambot che in quel punto si trova un indirizzo e-mail da saccheggiare. I gestori di siti web farebbero quindi bene a violare i modelli classici prestabiliti per la possibilità di contatto elettronico, senza però dimenticare il fattore della leggibilità per i visitatori umani della pagina, in modo da rendere possibile un accesso senza barriere all’indirizzo e-mail.

Classica rappresentazione dell’indirizzo e-mail senza prevenzione

Per proteggere un indirizzo di posta elettronica al meglio da una lettura automatica da parte di e-mail harvester, è utile prendere coscienza di come l’indirizzo venga solitamente integrato all’interno di un sito web. È possibile inserire in qualsivoglia pagina di HTML l’esempio seguente di una rappresentazione semplice e senza barriere di un indirizzo di contatto elettronico:

<p>Se avete domande o suggerimenti scrivete un’e-mail a: 
<a href="mailto:utente@dominio.it">utente@dominio.it</a>.
</p>

Se un visitatore apre una pagina che contiene questo codice, il browser mostrerà la seguente informazione includendo la stringa cliccabile “mailto”:

Se avete domande o suggerimenti scrivete un’e-mail a: utente@dominio.it.

Dal punto di vista dell’utente, questa è una rappresentazione ideale di un indirizzo di posta elettronica sul web. Per fare in modo che si mantenga il carattere user-friendly di questa forma di rappresentazione, i metodi più popolari usati per proteggere un indirizzo e-mail suggeriscono di rendere quest’ultimo irriconoscibile all’interno del codice sorgente, senza che la visualizzazione finale sul browser subisca delle conseguenze. In alternativa esiste anche la possibilità di separare l’indirizzo di posta elettronica dal sito web stesso e inoltrare la richiesta tramite un redirect lato server applicato al comando mailto. Al contrario, una trascrizione dell’indirizzo e-mail nella visualizzazione sul browser si trova sempre più raramente. I motivi per questo sono il carente comfort dell’utente e l’inefficienza del metodo in ambito di prevenzione da spam.

I trucchi effettivi con i quali è possibile proteggere indirizzi e-mail dallo spam puntano sulle sostituzioni, i mascheramenti o le codificazioni all’interno del codice sorgente, che vanno a ostacolare esclusivamente lo spambot, ma non l’utente.

Sostituzione dell’indirizzo e-mail

Le strategie di protezione che si basano sulla sostituzione cancellano l’intero indirizzo e-mail dal codice sorgente e lo cambiano o con una rappresentazione grafica oppure con un link grazie al comando mailto.

Inserire l’indirizzo e-mail sotto forma di grafica

Se un indirizzo e-mail viene inserito sotto forma di grafica rimane leggibile all’occhio umano, mentre per un e-mail harvester è difficilmente riconoscibile. D’altro canto, è anche vero che esistono casi isolati di spambot in grado di esaminare elementi di testo tramite OCR (Optical Character Recognition), ma questi costituiscono solamente una minoranza.

L’inserimento di tali informazioni di contatto come grafica offre quindi in proporzione una grande protezione contro lo spam, che i gestori di siti web acquisiscono a discapito, però, dell’accessibilità della pagina. Il codice HTML seguente mostra come si inserisce un indirizzo di posta elettronica all’interno di un sito web sotto forma di file immagine:

<img src="percorso/fileimmagine.png" with="120" height="20" alt=" Se avete domande o suggerimenti scrivete un’e-mail a: utente@dominio.it">

Per cui i visitatori della pagina vedranno la grafica seguente sul browser:

In questo modo quasi tutte le persone sono in grado di leggere l’indirizzo. Tuttavia, non è possibile copiare o linkare il testo con la stringa mailto. Mentre per la maggior parte degli utenti la difficoltà più grande a riguardo risiede nel dover trascrivere l’indirizzo manualmente, per quanto riguarda le persone con handicap visivi tali informazioni di testo all’interno di grafiche non sono nemmeno disponibili.

Per questo motivo è raccomandabile utilizzare testi alternativi per le informazioni relative alle immagini utilizzando l’attributo “alt”: queste sono leggibili da cosiddetti screen reader, applicazioni software che identificano e interpretano il testo che appare sullo schermo di un computer, e sono quindi a disposizione anche degli spambot. L’efficacia della protezione tramite un incorporamento dell’indirizzo e-mail è dunque diametralmente opposta all’utilizzo dell’alt-text. Concludendo, questo metodo è sconsigliato per proteggersi dallo spam.

Redirect dal collegamento HTML dell’indirizzo e-mail

Per assicurare una protezione efficace da attacchi di harvesting al proprio indirizzo e-mail, c’è la possibilità di separare quest’ultimo dal sito web. In questo caso entra in azione uno script che porta l’utente umano al comando mailto via redirect solamente dopo aver cliccato sul link. Questo apre il programma di posta elettronica dell’utente e vi inserisce l’indirizzo e-mail. Per gli spambot che scannerizzano il codice sorgente di un sito web, un simile collegamento appare come un rimando a un file: in questo modo viene impedita la lettura automatica. L’attivazione di questo meccanismo di protezione avviene, ad esempio, inserendo un link su un file PHP che contiene il redirect:

<p> Se avete domande o suggerimenti scrivete un’ 
<a href="redirect-mailto.php">e-mail</a>.
</p>

Il contenuto del file redirect-mailto.php è uno script che devia e porta in realtà al comando mailto tramite redirect:

<?php
header("Location: mailto:utente@dominio.it"); 
?>

Siccome il PHP viene elaborato lato server, gli spambot che esaminano il codice sorgente di un sito web non riescono in nessun modo a giungere all’indirizzo e-mail. Se è necessario che quest’ultimo venga visualizzato sulla pagina web, allora è consigliabile combinare questo metodo con un incorporamento grafico dell’indirizzo di posta elettronica.

Lo svantaggio di questa soluzione per la prevenzione dello spam consiste nel fatto che l’utente necessita di un handler (in italiano: gestore degli eventi) per il comando mailto così da poter arrivare all’indirizzo mail. Nella pratica, solitamente si tratta di un programma e-mail come Outlook o Thunderbird, ma sui browser più recenti possono venire inseriti anche servizi di posta elettronica in rete.

Mascheramento dell’indirizzo e-mail

Se un indirizzo e-mail non deve venire sostituito completamente da una grafica o da un link al comando mailto, allora sono disponibili strategie alternative che permettono di codificare l’indirizzo di posta elettronica tramite l’inserimento di elementi aggiuntivi atti al mascheramento, oppure metterli insieme dinamicamente sul browser sulla base di JavaScript. Ad esempio, è possibile realizzare una codifica semplice grazie alle entità HTML e alle codifiche URL o HEX.

Le strategie di mascheramento semplici puntano sulla funzione di commento, sugli elementi HTML e sul CSS. Il mascheramento di un indirizzo di posta elettronica tramite la composizione dinamica è, invece, leggermente più complesso. Tali metodi si differenziano, però, da una mera trascrizione di caratteri specifici, poiché la manipolazione dell’indirizzo avviene all’interno del codice sorgente e non ha effetti sul risultato finale sul browser.

Mascheramento tramite codifica dei caratteri

Le codifiche in uso al momento che vengono attivate durante il mascheramento di indirizzi e-mail nel codice sorgente, fanno riferimento alle entità HTML, al codice HEX, oppure alla rappresentazione percentile della codifica URL. Tali trascrizioni sono state originariamente sviluppate per la rappresentazione di caratteri speciali tramite caratteri standard. Questo metodo di codifica si presta molto bene al mascheramento di indirizzi di posta elettronica, poiché i relativi caratteri di riferimento vengono automaticamente tradotti sulla visualizzazione del browser.

Se i caratteri specifici dell’indirizzo e-mail utente@dominio.it devono venire mascherati con l’aiuto di entità HTML, prima di tutto questi vengono tradotti nel modo alternativo di scrittura.

&commat; = @

&period; = . (punto)

Una volta inserito all’interno dell’indirizzo di posta elettronica, il risultato nel codice sorgente è il seguente:

<p> Se avete domande o suggerimenti scrivete un’e-mail a: 
<a href="mailto:utente&commat;dominio&period;it"> utente&commat;dominio&period;it</a>
</p>

Siccome le entità HTML sono state definite esclusivamente per i caratteri speciali, con questo metodo di codifica dei caratteri non è possibile cifrare né l’intero indirizzo e-mail né l’importante stringa di testo mailto. Perciò in alternativa esiste la rappresentazione tramite codifica HEX, per cui viene impiegato il codice numerico Unicode e notato come segue:

&#codicenumerico;

Solitamente si utilizza la cifra HEX del carattere in questione contraddistinta da una “x”. La lettera “m” viene quindi trascritta “&#x6d;” oppure in sequenza decimale “&#109”. L’esempio di indirizzo e-mail utente@dominio.it, includendo mailto, sarà quindi rappresentato nel modo seguente:

<p> Se avete domande o suggerimenti scriveteci un’
<a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#x62;&#x65;&#x6e
;&#x75;&#x74;&#x7a;&#x65;&#x72;&#x40;&#x64;&#x6f;&#x6d;&#x61;&#x69;
&#x6e;&#x2e;&#x64;&#x65;">e-mail</a>.
</p>

I corrispettivi caratteri di riferimento della traduzione di un indirizzo e-mail sono all’interno di liste pubblicate in rete e quindi accessibili da chiunque. Una rappresentazione chiara è ad esempio disponibile su htmlarrows.com. Se si intende eseguire la codifica di un indirizzo e-mail completo, sono consigliabili i programmi di codifica che si trovano sotto forma di applicazione gratuita su numerosi siti web.

Un’ulteriore opzione per garantire la protezione del proprio indirizzo e-mail da attacchi spam è rappresentata dalla codifica URL. Questo procedimento è stato dapprima sviluppato per trasporre caratteri speciali di un URL in una rappresentazione interpretabile dal browser. Ciò comporta che vengano attivate combinazioni di tre caratteri, le quali sono composte dal simbolo della percentuale, seguito dal codice esadecimale ASCII di due caratteri, corrispondenti al simbolo da sostituire. Ad esempio, il mascheramento del simbolo @ presente in ogni indirizzo di posta elettronica avverrà nel modo seguente:

<p> Se avete domande o suggerimenti scriveteci un’
<a href="mailto:utente%40dominio.it">e-mail</a>.
</p>

In linea di massima un mascheramento dell’indirizzo di posta elettronica è traducibile abbastanza velocemente in una codifica di simboli. Tuttavia, l’effetto di protezione al giorno d’oggi si è ridotto rispetto al passato, poiché nel frattempo la maggior parte degli spambot sono programmati in un modo per cui ormai riescono a decifrare questa semplice forma di codifica senza problemi.

Mascheramento tramite completamento

Di base sarebbe possibile nascondere un indirizzo di posta elettronica dagli spambot interrompendolo con simboli aggiuntivi. Così facendo, i programmi non percepiscono più l’indirizzo nel suo intero, per cui viene impedita anche una sua eventuale lettura automatica. Una possibilità semplice di realizzare questa opzione è data dai commenti HTML che appaiono nel modo seguente:

<!-- commento -->

Idealmente contengono proprio i simboli caratteristici degli indirizzi mail:

<!-- abc@def -->

<!-- @abc.it -->

Se questi commenti vengono aggiunti all’indirizzo di posta elettronica, allora gli spambot che stanno scannerizzando il sito web andranno inevitabilmente a scontrarsi con il codice seguente:

<p> Se avete domande o suggerimenti scrivete un’e-mail a: 
ut<!-- abc@def -->ente@domi<!-- @abc.de -->nio.it. 
</p>

Nella rappresentazione sul browser i commenti non verranno visualizzati.

In alternativa possono essere inseriti simboli a piacimento anche senza la funzione di commento, se vengono nascoste sul browser con l’aiuto del CSS. Nell’esempio seguente l’indirizzo e-mail viene interrotto dall’elemento span. Il contenuto dal tag di inizio al tag di fine non viene preso in considerazione per la rappresentazione sul browser per via della proprietà display con il valore none.

<style type="text/css">
span.spamschutz {display:none;}
</style>

<p> Se avete domande o suggerimenti scriveteci un’e-mail a: 
utente<span class="protezionespam">SIMBOLI</span>@dominio.it. 
</p>

Mentre un utente umano sul browser vedrà l’indirizzo e-mail corretto, lo spambot, invece, probabilmente leggerà il testo nascosto all’interno dell’elemento span. Ciò dà la possibilità ai gestori delle pagine web di utilizzare l’indirizzo utenteSIMBOLI@dominio.it come cosiddetto honeypot per rendere sicuri gli indirizzi dei mittenti dagli attacchi di spam e per bloccare questi ultimi.

Lo svantaggio del mascheramento tramite completamento è che l’indirizzo non può essere linkato con un rimando HTML e gli utenti sono quindi costretti a copiarlo manualmente nei propri programmi di posta elettronica.

Inversione della successione di simboli

Il CSS non serve solamente a nascondere simboli aggiuntivi nel codice sorgente, ma permette anche di invertirne la successione. In questo modo i gestori di siti web sono in grado di inserire indirizzi e-mail nel codice sorgente nella successione sbagliata per ingannare gli spambot:

<style type="text/css">
span.ltrText {unicode-bidi: bidi-override; direction: rtl}
</style>
<p> Se avete domande o suggerimenti scriveteci un’e-mail a: 
<span class="ltrText">ti.oinimod@etnetu</span>.
</p>

Mentre gli spambot all’interno del codice sorgente leggono l’indirizzo invertito “ti.oinimod@etnetu”, la proprietà del CSS unicode-bidi con il valore bidi-override fa in modo che tutti i simboli all’interno del corrispettivo elemento span vengano letti dal browser come gli viene indicato dalla proprietà direction: in questo caso da destra a sinistra (right to left: rtl).

Questo tipo di mascheramento si scosta dal modello in uso in cui vengono normalmente rappresentati gli indirizzi di posta elettronica. Gli spambot più avanzati, tuttavia, non si fanno ingannare da questo trucco.

Composizione dinamica con JavaScript

Un’ulteriore opzione nella quale la rappresentazione corretta dell’indirizzo mail viene fornita solamente sul browser, viene offerta da JavaScript. Con questo metodo, infatti, l’indirizzo viene suddiviso in più parti che, durante il richiamo della pagina da parte del browser, vengono poi riunite.

<script type="text/javascript">
var part1 = "utente";
var part2 = Math.pow(2,6);
var part3 = String.fromCharCode(part2);
var part4 = "dominio.it"
var part5 = part1 + String.fromCharCode(part2) + part4;
document.write("Se avete domande o suggerimenti scriveteci un’e-mail a: 
<href=" + "mai" + "lto" + ":" + part5 + ">" + part1 + part3 + part4 + "</a>.");
</script>

Dalla riga 2 alla riga 6 vengono definiti i singoli componenti dell’indirizzo e-mail. La definizione del simbolo @ avviene in due passaggi. La funzione Math.pow(2,6) all’interno di part2 definisce il numero del simbolo in frasi di simboli compatibili all’ASCII (26 = 64). Questo viene successivamente convertito dalla funzione String.fromCharCode(part2) nel simbolo corrispettivo all’interno di part3. Il risultato delle parti definite da part1 fino a part5 avviene nelle righe 7 e 8 grazie alla funzione document.write(). A questo punto l’indirizzo di posta elettronica è a completa disposizione solo dopo l’esecuzione dello script lato client. Inoltre è anche disponibile una variante per cui lo script viene fatto partire solamente dopo il click dell’utente.

I metodi anti-spam che utilizzano script per la composizione dinamica si basano sull’ipotesi che gli harvester non riescano a interpretare del tutto JavaScript. Se questo è effettivamente il caso, allora in effetti si può parlare di un effetto di protezione altamente efficace. Lo svantaggio di questa procedura è, tuttavia, che quegli utenti che non hanno attivato JavaScript sul browser non possono vedere l’informazione di contatto. Per assicurarsi che ciò non avvenga, è dunque raccomandabile inserire una rappresentazione grafica dell’indirizzo.

Codifica dell’indirizzo e-mail

Grazie a JavaScript non solo è possibile unire indirizzi e-mail sotto forma di singoli componenti, ma il linguaggio di script permette anche di cifrare l’indirizzo in modo che sia al sicuro dallo spam. Un procedimento in uso è ROT13 che può essere applicato già solo con poche righe di JavaScript:

<script type="text/javascript">
function decode(a) {
  return a.replace(/[a-zA-Z]/g, function(c){
    return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) 
                               ? c : c - 26);
  })
}; 
function openMailer(element) {
var y = decode("znvygb:orahgmre@qbznva.qr");
element.setAttribute("href", y);
element.setAttribute("onclick", "");
element.firstChild.nodeValue = "Il software per le e-mail si sta aprendo";
};
</script>
<a id="email" href=" " onclick='openMailer(this);'>E-mail: cliccare qui </a>

Il codice d’esempio mostra nella riga 9 la versione cifrata dell’indirizzo di posta elettronica utente@dominio.it includendo anche la stringa di testo mailto (znvygb:orahgmre@qbznva.qr) così come nelle righe dalla 2 alla 7 viene mostrato come va decifrato il codice. La funzione da riga 8 a 13 apre il programma di casella postale predefinito dall’utente e scrive l’indirizzo decifrato nella riga del destinatario.

Lo script parte nel momento in cui viene cliccato sul link con l’anchor text “E-mail: cliccare qui” (righe 15-16). Una volta effettuato il click, apparirà il testo “Il software per le e-mail si sta aprendo” (riga 12).

Come già la composizione dell’indirizzo e-mail con base JavaScript, anche il metodo di codifica ha come presupposto che gli spambot non riescano a interpretare completamente il linguaggio script lato client. In teoria l’indirizzo cifrato potrebbe venire utilizzato come honeypot: in tal caso il dominio non dovrebbe venire codificato.

CAPTCHAs

Anche i CAPTCHA offrono la possibilità di proteggere un indirizzo dallo spam e lo fanno svelando l’informazione solo una volta che sarà stata verificata la natura umana dell’utente. Queste verifiche possono contenere compiti come la digitazione di combinazioni di lettere o numeri, oppure piccoli calcoli o esercizi di combinazioni come dei puzzle. Google, ad esempio, offre un servizio gratuito di CAPTCHA con reCAPCHA.

Comparativamente ai metodi precedentemente illustrati, i CAPTCHA offrono un’elevata protezione dallo spam, poiché gli indirizzi di posta elettronica non vengono visualizzati per niente o solo comunque codificati nel codice sorgente. Grazie ad ampie possibilità di realizzazione, i CAPTCHA riescono anche a integrarsi bene nel design di un sito web. Tuttavia lo sforzo aggiuntivo che è richiesto per giungere all’indirizzo e-mail ha effetti negativi sull’usabilità del sito anche per quanto riguarda l’aspetto di un accesso libero da barriere.

Il modulo di feedback: una proposta alternativa?

Invece che rivelare un indirizzo e-mail sul sito web, molti gestori di pagine offrono la possibilità di compilare un modulo di feedback, in cui il visitatore può inserire messaggi incluso nome e indirizzo del mittente. Questi vengono inoltrati a un destinatario, l’integrazione nel sito web avviene grazie ai linguaggi di programmazione lato server come, ad esempio, il PHP. Per impedire che avvengano attacchi di spambot alla procedura di invio di moduli di contatto, questi vengono normalmente messi al sicuro con i CAPTCHA. Un modulo di feedback non è però una vera e propria informazione di contatto, per cui, se un gestore di un sito web opta per sostituirlo alla pubblicazione dell’indirizzo e-mail dovrà essere pronto a prendersi il rischio che i visitatori della sua pagina si sentano intimoriti da questa procedura più impersonale e talvolta considerata inaffidabile.

Conclusione

Quale sia la strategia più adatta alla protezione del proprio indirizzo di posta elettronica, dipende soprattutto da quali esigenze abbia la rappresentazione della possibilità di contatto e da quali opzioni tecniche si hanno a disposizione. Una protezione efficace è promessa dal redirect al comando “mailto” tramite PHP o altri linguaggi di programmazione lato server; in questo caso è necessario che siano supportati dalla base hosting del sito web. Se il gestore di un sito web ha intenzione di pubblicare l’informazione di contatto via mail, si consiglia di aggiungere una rappresentazione grafica dell’indirizzo e-mail.

Al contrario, le trascrizioni e i processi di codifica URL, oppure tramite entità HTML o codice HEX, offrono un livello più basso di protezione ma rappresentano un primo stadio per una successiva codificazione. Il mascheramento o la codifica tramite JavaScript offre una protezione affidabile dagli spambot, ma per pubblicare il proprio indirizzo e-mail, i gestori di siti web devono comunque ugualmente prendere in considerazione l’incorporamento di una rappresentazione grafica dell’informazione di contatto. In particolar modo se l’indirizzo non viene creato sul sito web, bensì all’interno dell’handler mailto.

Infine, viene proposta l’alternativa di utilizzare un formulario di feedback, il quale dà la possibilità di venire contattati senza dover esporre informazioni riguardanti il proprio indirizzo e-mail, ma può rappresentare un ostacolo per i visitatori, che lo considerano un metodo non affidabile.


Abbiamo una proposta per te:
Web hosting a partire da 1 €/mese!

Dominio gratis
Certificato SSL Wildcard incluso
Assistenza clienti 24/7
A partire da 1 €/mese IVA escl. per un anno,
poi 8 €/ mese IVA escl.