Sicurezza base su WordPress: wp_generator e x-powered-by

Esistono un sacco di modi per bucare un sito web, soprattutto se l’hacker può leggere la versione di WordPress in uso con wp_generator e la versione PHP che utilizzate sul vostro server. Questo significa che è necessario prendere tutti gli opportuni accorgimenti per limitare il rischio che ciò accada, per quanto gli strumenti che un utente malevolo ha a sua disposizione siano davvero tanti. Sicuramente, tra gli accorgimenti in questione, c’è il non rendere pubbliche le informazioni sulla versione WordPress o Classicpress che utilizziamo e quelle sulla versione PHP in uso. Questo perché possono essere considerate informazioni sensibili.

Purtroppo però WordPress (e anche ClassicPress), chissà perché (è una domanda che mi sono fatto spesso), ha la necessità di rendere pubbliche queste informazioni, senza nemmeno darci la possibilità di scegliere.

Meta wp_generator

E’ il caso del meta "wp_generator" che rende di pubblico dominio la versione WordPress in uso.

Vi chiederete: e dunque? Dunque, è chiaro: un malintenzionato, conoscendo la versione in uso, conoscerà anche eventuali bug di sicurezza segnalati e non ancora corretti, e nel caso, sfruttarli per bucare il vostro sito (il che peraltro rende importante aggiornare sempre il vostro WordPress o ClassicPress all’ultima versione disponibile).

Perciò, eccovi il filtro per rimuovere il wp_generator dal vostro header:

remove_action('wp_head', 'wp_generator');

Tuttavia, quest’azione non rimuove la versione dai feed. Ecco dunque un filtro per rimuovere la versione anche dai feed:

add_filter('the_generator', 'wp_complete_version_removal');
function wp_complete_version_removal() {
    return '';
}

Fatto questo, rimuoviamo la versione anche dai file css e javascript caricati tramite l’azione wp_enqueue_scripts.

// remove version to js and css file enqueued
add_filter( 'style_loader_src', 'iljst_remove_css_js_version', 9999 );
add_filter( 'script_loader_src', 'iljst_remove_css_js_version', 9999 );
function iljst_remove_css_js_version( $src ) {
    if( strpos( $src, '?ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}

X-Powered-by

Ma non è finita qui. WordPress comunica nelle intestazioni HEADER della vostra pagina, anche la versione PHP in uso. Nelle intestazioni header non significa all’interno del tag head, ma nel flusso di informazioni che il server trasmette al browser, non visibile ad occhio umano. Perché lo faccia, non ne ho proprio idea. Per rimuovere x-powered-by dalle intestazioni header:

// Remove X-Powered-By
add_action( 'wp', 'iljst_remove_x_powered_by' );
function iljst_remove_x_powered_by() {
    if (function_exists('header_remove')) {
        header_remove('x-powered-by');
    }
}

Bene, a questo punto, nella pagina web, controllabile tramite console di sviluppo su Google Chrome o altro browser, non dovrebbero esserci più riferimenti né alla versione WP in uso né alla versione PHP.

Questo però non significa che siamo in una botte di ferro. Come ho detto più su, il malintenzionato conosce mille modi per raggiungere il proprio obiettivo. E’ certo però che eliminando queste informazioni, gli renderemo la vita un po’ più difficile.

Ma ora, vi starete chiedendo dove dobbiamo inserire questi pezzeti di codice (snippets). Naturalmente, nel file functions.php del vostro tema. Meglio un tema figlio, altrimenti un eventuale aggiornamento del tema, rimuoverà qualsiasi modifica che avete fatto, compresa la rimozione di wp_generator x-powered-by. E a quel punto saremmo di nuovo punto e a capo.

Naturalmente è bene dire che se non volete “sporcarvi” le mani mettendo mani al codice, esistono molti plugin che si occupano di sicurezza che fanno tutto questo (e anche più di questo) tramite un semplice modulo di controllo nel pannello di amministrazione.

Ultime dal blog

Visualizzare i commenti recenti, con avatar, usando uno shortcode

Pubblicato da Il Jester il 20 Giugno 2024

Creazione di un tema figlio su Wordpress e Classicpress

Pubblicato da Il Jester il 19 Giugno 2024

Usare il markdown per scrivere post su Wordpress e Classicpress

Pubblicato da Il Jester il 18 Giugno 2024

Gestire la query string di un url con Javascript

Pubblicato da Il Jester il 16 Giugno 2024

Sicurezza. Disabilitare XMLRPC sul vostro sito Wordpress

Pubblicato da Il Jester il 15 Giugno 2024

Gravatar. Un plugin per tutelare la privacy

Pubblicato da Il Jester il 14 Giugno 2024