n-wp.ru — блог о WordPress
Как запретить загрузку страниц своего сайта на другом сайте с помощью iframe | n-wp.ru

Как запретить загрузку страниц своего сайта на другом сайте с помощью iframe

Инструкция по установке контроля над показом страниц сайта на сторонних ресурсах через фреймы.

Тег iframe используется для создания элемента, в котором может отображаться любой независимый документ, в том числе и контент стороннего сайта. Я заметил, что некоторые сайты используют возможности этого тега для того, чтобы формировать собственные страницы с содержимым, которое они транслируют с других сайтов, причем часто с подменой оформления с помощью CSS или java-скриптов. Таким образом им не нужно создавать собственный контент, они его просто воруют транслируют с других сайтов, но внешне это все выглядит так, будто вы просматриваете страницу сайта с оригинальным контентом.

А если подумать более широко, то подобным образом с помощью невидимых форм можно получать клики и информацию с сайта-источника, что уже является угрозой безопасности. Такой способ обмана посетителей называется кликджекинг (clickjacking).

По крайней мере один из моих сайтов таким образом регулярно становился бесплатным донором контента для других сайтов. Мне такая ситуация надоела, и я запретил транслировать свой контент на других сайтах с помощью iframe. Хотите узнать, как? Это очень легко.

Использование скрипта

Добавьте в header.php следующий код:

Это код скрипта, который перенаправляет посетителей, просматривающих страницу сайта с фреймом, на страницу-источник.

Использование файла .htaccess

Однако, последние наблюдения показывают, что некоторые сайты обходят этот скрипт с помощью атрибута sandbox и события beforeunload. Поэтому самым надежным является использование директив файла .htaccess — они выполняются до загрузки страниц, и обойти их невозможно (если, конечно, в программном обеспечении сервера и в браузере нет уязвимостей).

Чтобы полностью запретить использование контента своего сайта с помощью iframe, добавьте в файл .htaccess, который находится в корневой папке сайта, следующий код:

Если на сервере подключен модуль mod_headers, то сервер выполнить директиву и запретит отдавать контент на другой сайт через iframe, вернув в браузер соответствующий заголовок. Причем на своем ресурсе вы можете использовать iframe без ограничений. Если же модуль не подключен, то сервер вернет ошибку 500. И тут вам либо нужно требовать у хостера включения этого модуля, либо искать другой хостинг.

Использование PHP

В 99,99% случаев у хостеров этот модуль включен по-умолчанию, поэтому с ним проблем возникнуть не должно. Однако не всем доступен файл .htaccess, но доступны файлы WordPress. В таком случае можно посылать команду серверу програмным способом.

Добавьте в файл header.php следующий код:

Подводные камни

Если вы воспользовались одним из вышеперечисленных способов, то можете столкнуться с проблемой в работе сторонних сервисов, использующих фреймы. Например, в сервисе Яндекс.Метрика перестает работать Вебвизор. Тут вам придется выбирать между безопасностью и удобством.

tiaurus

Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

2 комментария

/* ]]> */