Как запретить открывать сайт в iframe

Несколько вариантов как запретить открывать страницы своего сайта в <iframe> с помощью htaccess, PHP и JS.

htaccess:

<IfModule headers_module>
Header set X-Frame-Options: "DENY"
</IfModule>
htaccess

PHP:

header('X-Frame-Options: DENY');
PHP

До вызова функции header() не должно быть вывода в браузер (echo, ?>).

JavaScript:

<script>
if (window.parent.frames.length > 0) {
	window.stop();
}
</script>
HTML

htaccess:

<IfModule headers_module>
Header set X-Frame-Options: "SAMEORIGIN"
</IfModule>
htaccess

PHP:

header('X-Frame-Options: SAMEORIGIN');
PHP

JavaScript:

<script>
if (window.parent.frames.length > 0 && document.referrer.indexOf('example.com') == -1) {
	window.stop();
}
</script>
HTML

В заголовке X-Frame-Options есть третий параметр – ALLOW-FROM, который указывает разрешенный URL, но он устарел и не работает. На смену ему пришел заголовок Content-Security-Policy с директивой frame-ancestors.

htaccess:

<IfModule headers_module>
Header set Content-Security-Policy "frame-ancestors 'self' http://example.com http://example.ru" 
</IfModule>
htaccess

Для поддержки IE, нужно отправлять второй заголовок X-Content-Security-Policy с таким же содержанием.

PHP:

header("Content-Security-Policy: frame-ancestors 'self' http://example.com http://example.ru");
PHP

Второй вариант, без заголовка Content-Security-Policy:

if (strpos($_SERVER['HTTP_REFERER'], 'example.com') === false && strpos($_SERVER['HTTP_REFERER'], 'example.ru') === false) {
	Header('X-Frame-Options: SAMEORIGIN');
}
PHP
20.11.2020, обновлено 26.02.2021
3637

Комментарии

, чтобы добавить комментарий.

Другие публикации

Запрет выполнения PHP скриптов в директории
Если нужно запретить выполнение скриптов php в директории, например в uploads, нужно поместить туда файл .htaccess со...
12268
+9
Защита текстов от копирования
Примеры защиты от копирования текста с сайта, добавление копирайта при копировании и отключение выделения текста в браузере. Методы обхода этих ограничений.
7683
+2
Фильтрация IP-адресов
Примеры как запретить доступ к сайту по IP-адресам в PHP и htaccess.
8606
0
Управление доступом к файлам
Действие файла .htaccess распространяется на директорию и подкатегории в котором он размещен.
4160
0
Запрет доступа для HTTP-методов
В некоторых случаях требуется запретить определенные методы HTTP-запросов, например ограничение методов API...
4988
+2
HTTP коды
Список основных кодов состояния HTTP, без WebDAV.
6369
+1