Запретить открывать сайт в 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, но сейчас это считается устаревшим.
Зачем закрывать доступ к сайту через iframe
Допустим есть финансовый сайт, где между пользователями можно переводить деньги.
Злоумышленник может на своём сайте вывести кнопку «нравится», и повесить поверх кнопки прозрачный iframe финансового сайта.
Когда пользователь попытается нажать на кнопку «нравится», то на самом деле он нажмёт на кнопку, расположенная в прозрачном iframe, которая может перевести все деньги с финансового сайта на аккаунт злоумышленника.
Если запретить выводить сайт через iframe, то данной возможности у злоумышленников не будет.
Данный вид атаки называется «кликджекинг» (анг. Click Jacking).
Поддержать автора
Все статьи создаются и поддерживаются одним человеком,
если вам нравится контент, вы можете поддержать автора сайта