Запрет отображения сайта во фрейме (X-Frame и X-Content)

21 ноября 2016

X-Frame-Options

Злоумышленники могут использовать фреймы для накрутки лайков и для отправки спама. Например, на сайте-доноре поверх какой-нибудь кнопки создаётся прозрачный фрейм с вашим сайтом. Пользователь жмёт на кнопку, а действие совершается на вашем сайте. Если вы нигде не используете показ сайта во фрейме, то лучше отключить такую функцию. Отключение делается через header-параметр «X-Frame-Options».

Значения X-Frame-Options:
DENY — полный запрет отображения во фрейме;
SAMEORIGIN — разрешено отображение только для страниц с того же сайта, что и страница фрейма;
ALLOW-FROM test-site.ru — разрешено отображение для домена test-site.ru (не работает для Safari и Firefox).

Подробнее https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/X-Frame-Options

Пример кода для файла .htaccess
<IfModule headers_module>
	Header set X-Frame-Options SAMEORIGIN
</IfModule>

X-Content-Type-Options

Браузер отклоняет ответы с неправильными типами MIME, если сервер отправляет заголовок ответа «X-Content-Type-Options: nosniff».
Это функция обеспечения безопасности, которая помогает предотвратить атаки с использованием подмены типов MIME. На момент написания статьи данный параметр не поддерживался браузерами Safari. 

Подробнее https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/X-Content-Type-Options

Пример кода для файла .htaccess
<IfModule headers_module>
	Header set X-Content-Type-Options nosniff
</IfModule>

Общий код для .htaccess (файл находится в корне сайта, а если его нету, то можно создать файл с таким именем и залить туда предложенный код)
<IfModule headers_module>
	Header set X-Frame-Options SAMEORIGIN
	Header set X-Content-Type-Options nosniff
</IfModule>

Общий код для PHP
header('X-Frame-Options:SAMEORIGIN');
header('X-Content-Type-Options:nosniff');