Запретить открывать сайт в iframe
Заблокировать страницы в iframe, кроме текущего сайта
В целях безопасности рекомендуется закрывать возможность подключать сайт на внешних сайтах.
Для этого надо передавать заголовок X-Frame-Options со значением «SAMEORIGIN».
Рекомендуется делать через настройки веб-сервера, т.к. она будет применятся на всех страницах. Пример на Apache (.htaccess)
<IfModule headers_module> Header set X-Frame-Options: "SAMEORIGIN" </IfModule>
Или в PHP коде, но тогда надо будет указывать на каждой странице:
header('X-Frame-Options: SAMEORIGIN');
Также в качестве дополнительной защиты можно указать в JavaScript.
if (window.parent.frames.length > 0 && document.referrer.indexOf('sitename.ru') == -1) { window.stop(); }
Заблокировать открывать сайт в iframe
Чтобы запретить открывать сайт в любом iframe (включая текущий сайт), то надо передавать заголовок X-Frame-Options со значением «DENY».
Пример на Apache (.htaccess)
<IfModule headers_module> Header set X-Frame-Options: "DENY" </IfModule>
И в PHP коде:
header('X-Frame-Options: DENY');
Также в качестве дополнительной защиты можно указать в JavaScript.
if (window.parent.frames.length > 0) { window.stop(); }
Заблокировать страницы в iframe, кроме указанных сайтов
Указать список сайтов, которые могут выводить сайт в iframe можно через заголовок Content-Security-Policy.
Пример на Apache (.htaccess)
<IfModule headers_module> Header set Content-Security-Policy "frame-ancestors 'self' https://sitename.ru https://know-online.com" </IfModule>
И на PHP
header("Content-Security-Policy: frame-ancestors 'self' https://sitename.ru https://know-online.com");
Раньше для этих целей в заголовке X-Frame-Options использовался параметр ALLOW-FROM, но сейчас это считается устаревшим.
Поддержать автора