Stoppen Sie Clickjacking, indem Sie verhindern, dass Ihre WordPress-Site in einem Frame geladen wird
Clickjacking ist ein potenzielles Sicherheitsrisiko, das dadurch verursacht wird, dass jemand Ihre Website in einen Frame auf einer anderen Website lädt und es so erscheinen lässt, als ob die Website legitim ist, jedoch Interaktionen entführt, die Sie mit dieser Website durchführen, z. B. das Einreichen von Formularen.
Wenn Ihre Website beispielsweise die Anmeldung eines Benutzers erfordert, könnte die bösartige Website den Benutzernamen und die Passwörter von Benutzern protokollieren, die sich über ihre gerahmte Website über einen Clickjacking-Angriff anmelden.
Glücklicherweise ist das Verhindern von Clickjacking in WordPress ziemlich einfach. Sie können einfach dieses kleine Code-Snippet in Ihre functions.phpDatei einfügen, um den X-FRAME-OPTIONSHeader festzulegenSAMEORIGIN.
function wc_prevent_clickjacking() {
header( 'X-FRAME-OPTIONS: SAMEORIGIN' );
}
add_action( 'send_headers', 'wc_prevent_clickjacking', 10 );
Dadurch wird zusammen mit WordPress ein Header gesendet, der Browser anweist, zu verhindern, dass Seiten in Frames angezeigt werden, die nicht auf derselben Domain wie Ihre Website gehostet werden.
Clickjacking und ältere Browser
Ältere Browser (ältere Browser als Internet Explorer 8 (IE8)) verstehen den X-FRAME-OPTIONSHeader nicht, daher müssen wir auf JavaScript zurückgreifen. Dazu können Sie folgenden Code verwenden:
try { top.document.domain } catch (e) {
var f = function() {
document.body.innerHTML = '';
};
setInterval( f, 1 );
if (document.body) {
document.body.onload = f;
};
}
Erstellen Sie in Ihrem Design einen Ordner mit dem Namen JSund schneiden Sie dieses Code-Snippet aus und fügen Sie es in eine Datei mit dem Namen ein clickjack-protection.js.
Natürlich wollen wir das obige Skript nur zum Laden für Browser älter als IE8 in die Warteschlange stellen, also können wir dazu eine gute alte bedingte Anweisung verwenden, indem wir den folgenden Code in Ihre functions.phpDatei einfügen:
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 );