Содержание
Чтобы запретить доступ к документу в iframe, нам нужно изменить X-Frame-Options
документа с использованием мета-тега и (или) реализовать фреймбастер с помощью Javascript. Такие сайты, как YouTube, запрещают ему доступ из iframe, если вы пытаетесь встроить их веб-сайт в iframe, т.е.
Вы найдете сообщение об ошибке в консоли:
Ошибка : Отказался отображать «https://www.youtube.com/» во фрейме, поскольку для «X-Frame-Options» установлено значение «SAMEORIGIN».
Запретить доступ из фрейма для всех
Следующий тег запретит доступ с веб-сайта независимо от запроса.
Значение deny приведет к тому, что страница не будет отображаться во фрейме, независимо от того, какой сайт пытается это сделать (включая ваш).
Запретить доступ с других сайтов
Следующий тег запретит доступ с веб-сайта независимо от запроса.
При одинаковом исходном значении страница не может отображаться во фрейме с других доменов, кроме вашего. Вы по-прежнему сможете встраивать свою собственную страницу в iframe на своем собственном домене.
Насколько надежен этот метод
Если вы действительно задали себе вопрос (не читая этот абзац), то вы задаете большой вопрос, и действительно, X-Frame-Options чувствительны к атаке Clickjacking.
Перехват кликов или перехват кликов — это злонамеренный метод обмана пользователей Интернета с целью раскрытия конфиденциальной информации или получения контроля над вашим компьютером, когда они нажимают на, казалось бы, невинные веб-сайты. Вы можете прочитать больше об этой технике здесь.
Вы можете повысить защиту веб-сайта, который не предназначен для загрузки в iframe, реализующий Framekiller. Framekillers реализованы с использованием JavaScript, который проверяет, является ли текущее окно основным окном, вы можете использовать следующий фрагмент, написанный на JS, в качестве простого Framekiller на веб-странице, которую вы хотите заблокировать в iframes.
if (top.location != self.location) {
top.location = self.location.href;
}
Это решение работает, однако оно все еще ненадежно. Следующие ситуации могут сделать скрипт выше бесполезным:
- Пользовательский агент не поддерживает JavaScript.
- Пользовательский агент поддерживает JavaScript, но пользователь отключил поддержку.
- Поддержка JavaScript в пользовательском агенте некорректна или частично реализована.
Наконец, рекомендуется использовать X-Frame-Options на страницах, которые не предназначены для запуска во фрейме, а также использовать скрипт.
Повеселись !