Как реализовать фреймы-анкесторы CSP в Apache, Nginx и WordPress

Защитите свой сайт от атак типа click-jacking, внедрив заголовок CSP (Content Security Policy). CSP – один из 10 лучших безопасных заголовков по версии OWASP, и эксперты по безопасности часто рекомендуют применять его. Существует множество вариантов построения политики, чтобы обеспечить соблюдение того, как вы хотите раскрывать свои веб-ресурсы. Одна из директив под названием frame-ancestors, появившаяся в CSP версии 2, обеспечивает большую гибкость по сравнению с заголовком X-Frame-Options. frame-ancestors работает так же, как и X-Frame-Options, разрешая или запрещая встраивание ресурсов с помощью элементов iframe, frame, object, embed и applet. Я думаю, что X-Frame-Options будет устаревшим в ближайшем будущем, когда CSP будет полностью совместим со всеми основными браузерами. Пока я пишу, CSP frame-ancestors работает со всеми последними версиями браузеров, кроме IE.

Я не знаю, когда Microsoft разрешит поддержку IE. Вы всегда можете проверить совместимость браузеров на сайте Can I Use. Давайте рассмотрим следующую процедуру реализации.

Apache HTTP

mod_headers – это необходимое условие для внедрения любых заголовков в Apache. В зависимости от ОС и версии, но если вы используете Ubuntu и Apache 2.4, то вы можете использовать a2enmod headers, чтобы включить его.

root@geekflare:/etc/apache2# a2enmod headers
Enabling module headers.
To activate the new configuration, you need to run:
  systemctl restart apache2
root@geekflare:/etc/apache2# systemctl restart apache2
root@geekflare:/etc/apache2#

Примечание: все настройки вы можете выполнить в файле httpd.conf или любом другом эффективном файле конфигурации, который вы используете.

ОТКАЗАТЬ ВСЕМ

Аналогично X-Frame-Options DENY. Если вы не хотите, чтобы какой-либо сайт (в том числе и собственный) встраивался, добавьте следующее.

Header set Content-Security-Policy "frame-ancestors 'none';"

Сохраните файл и перезапустите Apache HTTP, чтобы он вступил в силу.

Я попытался вставить сайт, и, как вы видите, он был заблокирован.

Разрешайте себе, но запрещайте другим

Аналогично X-Frame-Options SAMEORIGIN, вы можете добавить следующее.

Header set Content-Security-Policy "frame-ancestors 'self';"

Разрешите использовать себя и несколько доменов

В X-Frame-Options не было возможности разрешить использование нескольких доменов. Благодаря CSP вы можете сделать так, как показано ниже.

Header set Content-Security-Policy "frame-ancestors 'self' 'geekflare.com' 'gf.dev' 'geekflare.dev';"

Вышеуказанное позволит встраивать содержимое с доменов self, geekflare.com, gf.dev, geekflare.dev. Замените эти домены на свои.

Nginx

Концепция и директива такие же, как и в разделе Apache HTTP, за исключением способа добавления заголовка. Заголовки в Nginx должны быть добавлены в блок сервера в соответствующем конфигурационном файле.

отказать во всех

add_header Content-Security-Policy "frame-ancestors 'none';";

Отрицать все, но не себя

add_header Content-Security-Policy "frame-ancestors 'self';";

Разрешить использование нескольких доменов

add_header Content-Security-Policy "frame-ancestors 'yoursite.com' 'example.com';";

Приведенный выше пример позволит встраивать контент на сайтах yoursite.com и example.come. После внесения изменений не забудьте перезапустить сервер Nginx для проверки политики.

WordPress

Это зависит от того, как вы размещаете WordPress. Если вы размещаетесь самостоятельно, например в облаке или на VPS, то, возможно, вы используете веб-сервер, например Apache или Nginx. Если это так, то вы можете следовать вышеупомянутому, чтобы внедрить в веб-сервер вместо WordPress. Однако если вы находитесь на виртуальном хостинге или не имеете доступа к модификации веб-серверов, то вы можете воспользоваться плагином. Чтобы реализовать CSP в WordPress, вы можете использовать плагин Content Security Policy Pro.

Верификация

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

Заключение

CSP – это один из мощных и безопасных заголовков для предотвращения веб-уязвимостей. Надеюсь, приведенные выше инструкции подскажут вам, как реализовать фрейм-анкесторы в Apache и Nginx.

clickfraud, ООО “ИНТЕРНЕТ ЗАЩИТА”, ИНН 7806602123, ОГРН 1227800111769, info@clickfraud.ru
Просмотров: 0