Stoppa Clickjacking genom att förhindra att din WordPress-webbplats laddas i en ram
Clickjacking är en potentiell säkerhetsrisk som orsakas av att någon laddar din webbplats i en ram på en annan webbplats och får det att se ut som om webbplatsen är legitim, men de kommer att kapa interaktioner som du gör med den webbplatsen, till exempel formulärinlämningar.
Till exempel om din webbplats kräver att en användare loggar in, kan den skadliga webbplatsen logga in användarnamn och lösenord för användare som loggar in via sin inramade webbplats via en clickjacking-attack.
Lyckligtvis är det ganska enkelt att förhindra clickjacking i WordPress. Du kan bara lägga till det här lilla kodavsnittet i din functions.php
fil för att ställa in X-FRAME-OPTIONS
rubriken tillSAMEORIGIN.
function wc_prevent_clickjacking() {
header( 'X-FRAME-OPTIONS: SAMEORIGIN' );
}
add_action( 'send_headers', 'wc_prevent_clickjacking', 10 );
Detta kommer att skicka en rubrik tillsammans med WordPress som talar om för webbläsare att förhindra att sidor visas i ramar som inte finns på samma domän som din webbplats.
Clickjacking och äldre webbläsare
Äldre webbläsare (webbläsare äldre än Internet Explorer 8 (IE8)) förstår inte X-FRAME-OPTIONS
rubriken, så vi måste gå tillbaka till JavaScript. För detta kan du använda följande kod:
try { top.document.domain } catch (e) {
var f = function() {
document.body.innerHTML = '';
};
setInterval( f, 1 );
if (document.body) {
document.body.onload = f;
};
}
Skapa en mapp med namnet i ditt tema JS
och klipp ut och klistra in det kodavsnittet i en fil som heter clickjack-protection.js
.
Naturligtvis vill vi bara ställa ovanstående skript i kö för att laddas för webbläsare som är äldre än IE8, så vi kan använda ett gammalt villkorligt uttalande för att göra detta, genom att placera följande kod i din functions.php
fil:
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 );