V14.4.7 HTTP Security Headers
Requirement:#
Verify that the content of a web application cannot be embedded in a third-party site by default and that embedding of the exact resources is only allowed where necessary by using suitable Content-Security-Policy: frame-ancestors and X-Frame-Options response headers.
Explanation:#
Заголовок ответа X-Frame-Options HTTP может использоваться для указания того, разрешено ли браузеру отображать страницу в \<frame>, \<iframe>, \<embed> или \<object>. Сайты могут использовать это для предотвращения атак типа click-jacking, гарантируя, что их контент не будет встроен в другие сайты.
Дополнительная безопасность обеспечивается только в том случае, если пользователь, получающий доступ к документу, использует браузер, поддерживающий X-Frame-Options.
Существует 2 возможных директивы X-Frame-Options:
DENY:
Страница не может быть отображена во фрейме, независимо от того, что сайт пытается это сделать.
SAMEORIGIN:
Страница может быть отображена только в том случае, если все фреймы-родители имеют одинаковое происхождение с самой страницей.
Content Security Policy (CSP) - это дополнительный уровень безопасности, позволяющий распознавать и устранять определённые типы атак, таких как Cross Site Scripting (XSS) и атаки внедрения данных. Спектр применения этих атак включает, но не ограничивается кражей данных, подменой страниц и распространением зловредного ПО.
Основная цель создания CSP заключается в устранении XSS-атак и сборе данных об их попытках. XSS-атаки используют доверие браузера к контенту, полученному с сервера. Зловредные скрипты исполняются в браузере жертвы, поскольку браузер доверяет источнику, даже когда скрипт поставляется не оттуда, откуда кажется.
CSP даёт возможность администраторам серверов снизить или полностью устранить вектора, по которым злоумышленники могут провести XSS, с помощью определения доменов, которые браузер клиента должен считать доверенными источниками исполняемых скриптов. В таком случае, браузер, совместимый с CSP, будет исполнять только те скрипты, которые были получены из списка разрешённых источников, и игнорировать прочие (в т.ч. встраиваемые скрипты и обработчики событий, указанные непосредственно в HTML-атрибутах).
В качестве крайней меры защиты, сайты, которые хотят запретить исполнение скриптов, могут настроить это поведение глобально, с помощью соответствующей опции.
Вы можете начать настройку Content-Security-Policy с определения HTTP-заголовка и указания какую политику использовать:
Где policy - это строка, содержащая директивы, описывающие вашу Content Security Policy.
Remediation:#
X-Frame-Options
Apache:
Header set X-Frame-Options SAMEORIGIN
Nginx:
add_header X-Frame-Options "SAMEORIGIN";
IIS:
Add Custom HTTP Response Header -> Name: X-Frame-Options -> Value: SAMEORIGIN
Tomcat:
Наиболее распространённые сценарии использования CSP:
Пример 1:
Вы хотите ограничить источники контента только исходным сервером (исключая поддомены)
Пример 2:
Вы хотите разрешить получение контента с доверенного домена и всех его поддоменов (доверенный домен не обязательно должен совпадать с тем, на котором настраиваются CSP.)
Пример 3:
Вы хотите разрешить пользователям приложения вставлять в создаваемый ими контент картинки из любого источника, но при этом ограничить источники аудио- и видео-файлов списком доверенных провайдеров. Получение скриптов должно происходить только с конкретного сервера, содержащего доверенный код.
Пример 4:
Вы хотите удостовериться, что весь получаемый контент для онлайн-банкинга идёт по SSL и атакующий не сможет обрабатывать запросы:
Пример 5:
Для просмотра писем в почтовом клиенте вы хотите разрешить использование HTML внутри письма, а также позволить загрузку изображений из любых источников, но запретить использование любого JavaScript-кода и прочий потенциально опасный контент.