Остановите Clickjacking, запретив загрузку вашего сайта WordPress во фрейме
Clickjacking — это потенциальная угроза безопасности, вызванная тем, что кто-то загружает ваш веб-сайт внутри фрейма на другом веб-сайте и делает вид, что веб-сайт является законным, однако они будут перехватывать ваши взаимодействия с этим сайтом, такие как отправка форм.
Например, если ваш веб-сайт требует, чтобы пользователь вошел в систему, вредоносный веб-сайт может регистрировать имя пользователя и пароли пользователей, которые входят в систему через свой созданный сайт с помощью атаки кликджекинга.
К счастью, предотвратить кликджекинг в WordPress довольно просто. Вы можете просто добавить этот небольшой фрагмент кода в свой functions.php
файл, чтобы установить X-FRAME-OPTIONS
заголовокSAMEORIGIN.
function wc_prevent_clickjacking() {
header( 'X-FRAME-OPTIONS: SAMEORIGIN' );
}
add_action( 'send_headers', 'wc_prevent_clickjacking', 10 );
Это отправит заголовок вместе с WordPress, который сообщает браузерам, чтобы страницы не отображались во фреймах, которые не размещены в том же домене, что и ваш сайт.
Clickjacking и старые браузеры
Старые браузеры (браузеры старше Internet Explorer 8 (IE8)) не понимают X-FRAME-OPTIONS
заголовок, поэтому нам нужно вернуться к JavaScript. Для этого вы можете использовать следующий код:
try { top.document.domain } catch (e) {
var f = function() {
document.body.innerHTML = '';
};
setInterval( f, 1 );
if (document.body) {
document.body.onload = f;
};
}
Внутри вашей темы создайте папку с именем JS
, вырежьте и вставьте этот фрагмент кода в файл с именем clickjack-protection.js
.
Конечно, мы хотим поставить приведенный выше скрипт в очередь для загрузки только для браузеров старше IE8, поэтому для этого мы можем использовать старый добрый условный оператор, поместив следующий код в ваш functions.php
файл:
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 );