АгАртИ-А
Разработка АгАртИ-А.рф
- ^ X
Запрещаем отображение сайта (страницы) в IFRAME
[ \ ] [ .. ]
agarty@apache22.com [/list/Zapreshaem_otobrazenie_saita_v_IFRAME/]> ls -la

Запрещаем отображение сайта (страницы) в IFRAME

Создано: 2016-02-19 12:22:24, обновлено: 2016-02-19 12:25:47

Запрещаем отображение сайта (страницы) в IFRAME

Буквально на днях столкнулся с неприятностью. Проснувшись рано утром, обнаружил, что в статистике прирост +400 к посетителям. Ну, думаю, опять кто-то разместил ссылку на glunews.ru на полукрупном портале.

Захожу в подробности и вижу, что переходы были с glunews.info. 0_0 ничоси! Но я ведь не нахожусь в доменной зоне INFO, и домен там не покупал. Проверяю в WHOIS, а домен зареген 2 дня назад. 0_0. От оно как.

Перехожу на сам домен и... открывается полностью мой сайт. Сграббили, что ли.. Ну ясен пень сразу исходник, открываю, а там IFRAME ведущий на мою главную страницу и открывающийся во всю ширину окна. Словно бы находишься на моем сайте, но в тоже время адрес совершенно другой.

Ну ппц. И адрес какой-то подозрительный: http://glunews.info/kRNw17, если просто открыть http://glunews.info/ то выполняется циклическое перенаправление на главную glunews.info. Начинаем анализ. Смотрим логи. Видим там записи, примерно:

http://glunews.info/kRNw17?site=www.gismeteo.ru&ad=1747820902&yclid=636991648113885937
http://glunews.info/kRNw17?site=pogoda.yandex.ru&ad=1747820902&yclid=636948540666415987

Это че за нах такой? Получается при переходе по данной ссылке, открывается iframe во всю высоту страницы. Это жеж прямая угроза фишинга и прочей ереси! Неее, так не пойдет, подумал я, и в кратчайшие сроки ввел защиту от показа во IFRAME.

Приступая к защите надо помнить, что не все страницы надо защищать. Если вы используете обмен трафиком и у вас есть страница для внешних сайтов, которые отображают ее во фрейме, то на данную страницу защиту вводить не нужно.

1. Простейшая проверка. Проверяем страницу перехода, т.е. с какой был переход на сайт. У меня логика была простая, если переход был с домена glunews, то проверить, мой это домен или "перехватчика". Т.е. если в HTTP_REFERER содержится glunews, проверяем RU он или нет, если нет - переадресация на главный домен glunews.ru. Добавляем в индексный файл:

if (preg_match("#://(www\.)?glunews\.[a-z]{2,4}/#", $_SERVER["HTTP_REFERER"]) && !preg_match("#://(www\.)?glunews\.ru/#", $_SERVER["HTTP_REFERER"])) {

?>
<html><head><script>parent.location='http://www.glunews.ru';</script></head><body></body></html>
<?
exit;

}

2. Добавляем заголовок, не позволяющий открывать страницу (сайт) во IFRAME (и помним, все заголовки добавляются ПЕРЕД любым выводом на страницу):

header("X-Frame-Options: SAMEORIGIN");

SAMEORIGIN - позволяет открывать во фрейме, только если это родной (текущий) сайт
DENY - вообще всем запрещает

Кстати, если хотим вообще на все до единой страницы выставить данную опцию, то можно применить глобально для сервера. Редактируем конфиги:

Apache

Header always append X-Frame-Options SAMEORIGIN

nginx

add_header X-Frame-Options SAMEORIGIN;

IIS

<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
...
</system.webServer>

HAProxy

rspadd X-Frame-Options:\ SAMEORIGIN

3. Определяем, открыт ли сайт во фрейме и если во фрейме - переадресовываем на главную страницу.

Добавляем в <head></head>:

<script> if  (window!=window.top) parent.location='http://www.glunews.ru'; </script>

4. А что, если чел отключит яваскрипт. Ну всякое бывает =). Ну для таких в тот же <head /> добавляем:

<noscript><meta http-equiv="refresh" content="0; URL=/badbrowser.html"></noscript>

Т.е. если у юзверя не работает JavaScript, то переадресует на страницу, где ему будет сказано установить нормальный браузер. Не валнавайтесь, поисковики и роботы будут корректно обрабатывать все страницы.

Конечно это все не панацея. Поэтому я дополнительно написал регистратору доменных имен, а так же хостеру, на котором размещен сайт-клон, о том, что у них "завалялся" клиент, который может использовать мой сайт в качестве фишинговой атаки.

Регистратор промямлил, что он всего-лишь регистратор. А вот хостер связался с клиентом своим ну и собсна:

Канееееееееечна граббинг новостей. С клона сайта (по названию доменного имени)... ^____^

И действительно фрейм был удален. Однако я еще фиксирую единичные (не более 2-3) переходов с сайта-клона. Но уже не так критично и данные я максимально защитил.

Чего и вам желаю.