Запрет открытия сайта в iframe


Часто, для защиты сайта приходится запрещать его отображение в фреймах на других сайтах (чужих). Так это сделано, например, на Вконтакте и Facebook.

А делается это не сложно.

1. Отправка серверного заголовка, запрещающего браузеру показывать содержимое во фрейме

Если есть доступ к Апачу, то в файле httpd.conf просто добавляем строку:

Header always append X-Frame-Options SAMEORIGIN

Пояснение:
DENY - запрет отображения во всех фреймах;
SAMEORIGIN - отображать только во фреймах, инициируемых самим сайтом.


2. Также можно при помощи php:

<?php
header("X-Frame-Options: SAMEORIGIN");
?>

3. При помощи Javascript

Код позволит выявить, загружается ли ваш документ во фрейме, если да – то загрузка останавливается соответствующей командой. Вставить код надо в HEAD:

<script type="text/javascript">
if (window.parent.frames.length > 0) {
window.stop();
}
</script>

4. или вот такой способ с перенаправлением на ваш сайт:

<script type="text/javascript">
if(self != top) // если текущий документ не является верхним элементом
{
    top.location=document.location; // задаём верхнему элементу адрес нашей страницы
}
</script>

5. а вот так это сделано у яндекса

<script>
if((self.parent&&!(self.parent===self))&&(self.parent.frames.length!=0)){self.parent.location=document.location}
</script>