Несколько вариантов как запретить открывать страницы своего сайта в <iframe> с помощью htaccess, PHP и JS.
htaccess:
<IfModule headers_module>
Header set X-Frame-Options: "DENY"
</IfModule>
PHP:
header('X-Frame-Options: DENY');
До вызова функции header() не должно быть вывода в браузер (echo, ?>).
JavaScript:
<script>
if (window.parent.frames.length > 0) {
window.stop();
}
</script>
htaccess:
<IfModule headers_module>
Header set X-Frame-Options: "SAMEORIGIN"
</IfModule>
PHP:
header('X-Frame-Options: SAMEORIGIN');
JavaScript:
<script>
if (window.parent.frames.length > 0 && document.referrer.indexOf('example.com') == -1) {
window.stop();
}
</script>
В заголовке 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>
Для поддержки IE, нужно отправлять второй заголовок X-Content-Security-Policy с таким же содержанием.
PHP:
header("Content-Security-Policy: frame-ancestors 'self' http://example.com http://example.ru");
Второй вариант, без заголовка Content-Security-Policy:
if (strpos($_SERVER['HTTP_REFERER'], 'example.com') === false && strpos($_SERVER['HTTP_REFERER'], 'example.ru') === false) {
Header('X-Frame-Options: SAMEORIGIN');
}





