Zatrzymaj klikanie, uniemożliwiając wczytywanie witryny WordPress w ramce
Clickjacking to potencjalne zagrożenie bezpieczeństwa spowodowane przez kogoś, kto ładuje Twoją witrynę w ramce w innej witrynie i sprawia, że wygląda ona tak, jakby witryna była wiarygodna.
Na przykład, jeśli Twoja witryna wymaga zalogowania się użytkownika, złośliwa witryna może rejestrować nazwę użytkownika i hasła użytkowników, którzy logują się za pośrednictwem swojej witryny z ramkami za pomocą ataku typu clickjacking.
Na szczęście zapobieganie clickjackingowi w WordPressie jest dość proste. Możesz po prostu dodać ten mały fragment kodu do swojego functions.php
pliku, aby ustawić X-FRAME-OPTIONS
nagłówek naSAMEORIGIN.
function wc_prevent_clickjacking() {
header( 'X-FRAME-OPTIONS: SAMEORIGIN' );
}
add_action( 'send_headers', 'wc_prevent_clickjacking', 10 );
Spowoduje to wysłanie nagłówka wraz z WordPress, który informuje przeglądarki, aby zapobiegały wyświetlaniu stron w ramkach, które nie są hostowane w tej samej domenie, co Twoja witryna.
Clickjacking i starsze przeglądarki
Starsze przeglądarki (przeglądarki starsze niż Internet Explorer 8 (IE8)) nie rozumieją X-FRAME-OPTIONS
nagłówka, więc musimy wrócić do JavaScript. W tym celu możesz użyć następującego kodu:
try { top.document.domain } catch (e) {
var f = function() {
document.body.innerHTML = '';
};
setInterval( f, 1 );
if (document.body) {
document.body.onload = f;
};
}
Wewnątrz motywu utwórz folder o nazwie JS
, a następnie wytnij i wklej ten fragment kodu do pliku o nazwie clickjack-protection.js
.
Oczywiście chcemy umieścić powyższy skrypt w kolejce tylko w celu załadowania dla przeglądarek starszych niż IE8, więc możemy użyć do tego starej dobrej instrukcji warunkowej, umieszczając w functions.php
pliku następujący kod:
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 );