Запретить открывать сайт в 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, но сейчас это считается устаревшим.