Intereting Posts
Как заменить символы подчеркивания на codeigniter url тире? iOS 5- отправка json с использованием NSURLRequest и разбор в php через $ _POST Есть ли функция PHP для подсчета количества раз, когда значение возникает в массиве? PHP: сеанс не работает PHP-скрипт для выполнения сценария bash Анализ и редактирование XML-файла в PHP Читайте снизу вверх в PHP и SQL В чем разница между обновлением композитора и установкой композитора? Команда cron для периодического выполнения php-скрипта Symfony2 Doctrine2 – генерировать аннотацию Many-to-Many из существующей базы данных по доктрине: mapping: import Как отслеживать просмотры страниц без разбиения базы данных MySQL Php – передача переменной из контроллера для просмотра PHP session_start сериализует и блокирует все остальные, использующие один и тот же сеанс как иметь 64-битное целое число на PHP? Получение удаленной адресной информации PHP по URL-адресу

Как реализовать политику безопасности контента?

Есть хорошие статьи, объясняющие варианты для CSP, как этот: http://www.html5rocks.com/en/tutorials/security/content-security-policy/

Возможно, это совершенно очевидно, потому что я не могу найти хороших примеров, но как вы на самом деле реализуете CSP на практике?

В PHP вы можете установить заголовок на странице, которую вы обслуживаете, но что, если у вас просто есть файл HTML? Вам нужно делать это через ваш веб-сервер, apache или подобное? Это не простой подход.

Какая здесь самая лучшая практика? На каждой отдельной странице должен быть установлен заголовок вручную?

Благодаря!

Это не простой подход.

Да, это не так. Однако есть некоторые умные сочетания, которые вы можете взять.

как вы на самом деле реализуете CSP на практике?

В PHP вы можете установить заголовок на странице, которую вы обслуживаете, но что, если у вас просто есть файл HTML? Вам нужно делать это через ваш веб-сервер, apache или подобное? Это не простой подход.

Я написал скрипт PHP с командной строкой, который взял блок JSON, подобный блоку кода A, собрал строку, которая похожа на блок кода B и сохранила ее в отдельный файл.

A:

{ "script-src": [ "self", "https://apis.google.com" ] } 

B:

 add_header Content-Security-Policy "script-src: 'self' https://apis.google.com"; 

Затем я добавил строку для настройки моей конфигурации nginx для этого виртуального хоста, чтобы включить сгенерированную директиву CSP:

 include /path/to/script/output.conf; 

Как следствие этой системы, если я хотел внести изменения в заголовки CSP, мне нужно только отредактировать файл JSON.

И именно так я упростил управление заголовками CSP. Ваш пробег может отличаться.

Вот он: CSP Builder .

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

Проверьте эти сайты на помощь в создании правил CSP:

https://csp-evaluator.withgoogle.com/

https://report-uri.io/home/generate

Скотт Хельм знает много о предмете и имеет хорошие примеры. Вы также можете отправить свои отчеты на свой веб-сайт для некоторого базового анализа.

https://scotthelme.co.uk/content-security-policy-an-introduction/

Это может также представлять интерес для конфигураций apache

Создайте nonce с Apache 2.4 (для заголовка политики безопасности контента)

Я также настоятельно рекомендую вам прочитать этот документ, в котором рассказывается о некоторых более новых (и более простых) подходах к конфигурации и обратной совместимости браузера

https://www.websec.be/blog/cspstrictdynamic/

Это также отличная статья «CSP Is Dead, Long Live CSP!» из google research, в частности, обратитесь к разделу 4.IMPROVING CSP, минуя «белые списки» и распространяя доверие.

https://research.google.com/pubs/pub45542.html

Делайте много чтения, и когда вы готовы к внедрению, используйте директиву режима REPORT ONLY, чтобы вы получали консольные сообщения без соблюдения политики.

 Content-Security-Policy-Report-Only: <policy-directive>; <policy-directive> 

После того, как вы счастливы, вы можете обеспечить соблюдение правил:

 Content-Security-Policy: <policy-directive>; <policy-directive> 

Если вы используете Apache, вы можете использовать .htaccess для этого

Поместите файл с именем .htaccess в ваш путь к проекту (обычно что-то типа) / var / www / myProject, если он еще не существует по другим причинам. В этом случае просто добавьте следующее правило заголовка:

 Header set Content-Security-Policy " default-src 'self'; script-src 'self' www.google-apis.com *.cloudflare.com someotherDomain.com; img-src 'self' *.cloudflare.com; " 

Теперь современные браузеры будут выполнять только сценарии из вашего домена или google-apis.com или cloudflare.com или someotherDomain.com. Изображения будут загружаться только из вашего домена и облачного флера. Все остальное будет разрешено только из вашего домена.

Очень хороший источник: ole.michelsen.dk