Corsi on-line

WordPress: nascondere le email agli spambots

Recentemente ho avuto la necessità di ricercare una soluzione per un problema piuttosto ricorrente non soltanto nelle installazioni di WordPress; accade infatti che gli spambots, i famigerati programmi concepiti per creare automaticamente elenchi di indirizzi di posta elettronica a cui inviare messaggi indesiderati (spam), effettuino una scansione completa delle pagine di un sito Web alla ricerca di email per il popolamento delle proprie liste. Come è possibile impedire loro di svolgere questa funzione dai risvolti particolarmente fastidiosi? Un breve snippet potrebbe aiutarci.

Apriamo quindi il file “functions.php” di WordPress e incolliamo all’interno di esso un filtro sul modello del seguente:

function security_remove_emails($content) {
    $pattern = '/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})/i';
    $fix = preg_replace_callback($pattern,"security_remove_emails_logic", $content);

    return $fix;
}
function security_remove_emails_logic($result) {
    return antispambot($result[1]);
}
add_filter( 'the_content', 'security_remove_emails', 20 );
add_filter( 'widget_text', 'security_remove_emails', 20 );

Nello specifico, il sorgente proposto utilizza un pattern (in pratica uno schema ricorrente) basato sulle espressioni regolari per effettuare la ricerca di indirizzi di posta elettronica all’interno dei contenuti gestiti; tale pattern viene passato come argomento alla funzione nativa di PHP preg_replace_callback(), quest’ultima è destinata ad eseguire operazioni di ricerca e sostituzione tramite RegExp e callback (cioè attraverso la chiamata di un’ulteriore funzione). Alla funzione di callback  spetterà infine di mettere a disposizione la stringa per la sostituzione.

In questo modo gli spambots non dovrebbero riuscire a identificare le email inserite in testi e widgets in quanto queste ultime verranno nascoste automaticamente dal filtro predisposto.

La soluzione proposta non è di mia creazione, ritengo quindi doveroso segnalarne la fonte.

Post correlati
I più letti del mese
Tematiche