Clickjacking - что это и как бороться
Clickjacking - это механизм обмана пользователя путем подмены страницы через iframe. Злоумышленник может создать страницу с прозрачным iframe сайта на который производится атака и разместить привлекательный контент под ним. Пользователь кликая по контенту на сайте совершает действие на другом ресурсе не подозревая об этом.
Самой простой, но не самой надежной защитой от подобного рода атак будет добавление на страницу вашего проекта скрипта с проверкой, если страница загружена во фреме делать редирект с сайта злоумышленика на ваш сайт:
<script> if(top != self) { top.location = self.location; } </script>
Более надежным же способом, будет запрет отображение во фрейме через заголовок ответа сервера X-Frame-Options.
X-Frame-Options в заголовке HTTP-ответа может использоваться для указания того, разрешено ли браузеру открывать страницу в frame или iframe.
Для X-Frame-Options есть три параметра:
- SAMEORIGIN: этот параметр позволяет отображать страницу в frame в том же месте, что и сама страница.
- DENY: этот параметр предотвратит отображение страницы в frame или iframe.
- ALLOW-FROM URI: этот параметр позволяет отображать страницу только по указанному url.
Установите в настройках nginx или apache заголовок с параметром SAMEORIGIN и ни кто кроме вас не сможет открыть страничку во фрейме.
# Apahce httpd.conf: Header always append X-Frame-Options SAMEORIGIN Apache .htaccess Header append X-FRAME-OPTIONS "SAMEORIGIN" Nginx add_header X-Frame-Options SAMEORIGIN;
Этот заголовок сработает в браузераъ IE 8.0+, FF 3.6.9+, Opera 10.50+, Safari 4.0+ и Chrome 4.1+ (это более 70% пользователей рунета)
Например, эта настройка понадобится если вы захотите сделать загрузку файлов в ckeditor4