Ferma il clickjacking impedendo al tuo sito WordPress di caricare in un frame
Il clickjacking è un potenziale rischio per la sicurezza causato da qualcuno che carica il tuo sito Web all’interno di un frame su un altro sito Web e fa sembrare che il sito Web sia legittimo, tuttavia dirottano le interazioni che fai con quel sito, come l’invio di moduli.
Ad esempio, se il tuo sito Web richiede a un utente di accedere, il sito Web dannoso potrebbe registrare il nome utente e le password degli utenti che accedono tramite il loro sito incorniciato tramite un attacco clickjacking.
Fortunatamente prevenire il clickjacking in WordPress è abbastanza semplice. Puoi semplicemente aggiungere questo piccolo frammento di codice nel tuo functions.php
file per impostare l’ X-FRAME-OPTIONS
intestazioneSAMEORIGIN.
function wc_prevent_clickjacking() {
header( 'X-FRAME-OPTIONS: SAMEORIGIN' );
}
add_action( 'send_headers', 'wc_prevent_clickjacking', 10 );
Questo invierà un’intestazione insieme a WordPress che dice ai browser di impedire la visualizzazione di pagine in frame che non sono ospitati sullo stesso dominio del tuo sito web.
Clickjacking e browser meno recenti
I browser più vecchi (browser più vecchi di Internet Explorer 8 (IE8)) non capiscono l’ X-FRAME-OPTIONS
intestazione, quindi dobbiamo ricorrere a JavaScript. Per questo è possibile utilizzare il seguente codice:
try { top.document.domain } catch (e) {
var f = function() {
document.body.innerHTML = '';
};
setInterval( f, 1 );
if (document.body) {
document.body.onload = f;
};
}
All’interno del tuo tema crea una cartella denominata JS
e taglia e incolla quel frammento di codice in un file chiamato clickjack-protection.js
.
Ovviamente vogliamo solo accodare lo script sopra da caricare per i browser più vecchi di IE8, quindi possiamo usare una buona vecchia istruzione condizionale per farlo, inserendo il seguente codice nel tuo functions.php
file:
function wc_prevent_clickjacking_older_browsers() {
$script_url = get_stylesheet_directory_uri(). 'js/clickjack-protection.js';
wp_enqueue_script(
'clickjack-protection-js',
$script_url
);
wp_script_add_data( 'clickjack-protection-js', 'conditional', 'lt IE 8' );
}
add_action( 'wp_enqueue_scripts', 'wc_prevent_clickjacking_older_browsers', 10 );