WordPress: proteggere gli indirizzi e-mail dagli spammer

WordPress: proteggere gli indirizzi e-mail dagli spammer

Inserire la propria e-mail su un sito in WordPress è sicuramente qualcosa che potrebbe essere utile qualora non disponeste di un form per i contatti. In tutti gli altri casi, secondo il mio modesto parere, è il modo migliore per rendere più facile la vita agli spammer. Tuttavia, WordPress fornisce alcuni strumenti utili per difenderci da questo fastidioso fenomeno. Vediamo quali.

La funzione antispambot()

Il primo strumento è la funzione antispambot(). Esempio:


<?php echo antispambot(get_the_author_email()); ?>

La documentazione di WordPress afferma che:

The function antispambot() above parses the e-mail address passed by get_the_author_email() (this is the same as the_author_email(), except it returns rather than displays the author’s e-mail address). Use of the echo command displays the output of antispambot(). An interesting feature is it encodes only portions of an address, and does so randomly so the letters encoded are different each time the page loads, adding a little more firepower to the spam protection arsenal.

Filtri sul contenuto

Il secondo strumento, più complesso, prevede l'applicazione dei filtri di WordPress (tramite add_filter()) al contenuto di WordPress (the_content). In sostanza si tratta di scrivere una funzione che converta una stringa di questo tipo:


<a href="mailto:person@example.com">person@example.com</a>

in questo formato:


<a href="mailto:&#x70;&#x65;&#x72;&#x73;
&#x6f;&#x6e;&#x40;&#x65;&#x78;&#x61;
&#x6d;&#x70;&#x6c;&#x65;&#x2e;&#x63;om" title="mailto:&#x70;
&#x65;&#x72;&#x73;&#x6f;&#x6e;&#x40;&#x65;&#x78;
&#x61;&#x6d;&#x70;&#x6c;&#x65;&#x2e;&#x63;om">
&#x70;&#x65;&#x72;&#x73;&#x6f;&#x6e;&#x40;&#x65;&#x78;&#x61;&#x6d;
&#x70;&#x6c;&#x65;&#x2e;&#x63;om</a>

Non sono affatto convinto della reale efficacia di metodi del genere, perchè gli spambot potrebbero essere stati programmati per effettuare l'operazione inversa. Infatti si tratta semplicemente di una semplice sostituzione di stringhe:


add_filter('the_content', 'obfuscate_email');

function obfuscate($matches) {

	return substr( chunk_split( bin2hex( " $matches[0]" ), 2, ";&#x" ), 3, -3 );

}

function obfuscate_email($content) {

	return preg_replace_callback('#(([a-z0-9\-_\.]+?)@([^\s,{}\(\)\[\]]+\.[^\s.,{}\(\)\[\]]+))#iesU', 'obfuscate', $content); 

}

Ad ogni modo, vi prego di usare un form per i contatti per evitare sorprese non sempre piacevoli.

Torna su