#google-chrome #content-security-policy
#google-chrome #content-security-policy
Вопрос:
Я пытаюсь настроить заголовки CSP для своего приложения. Я намеренно не включил наш CDN из font-src
style-src
директив и, чтобы инициировалось нарушение. Я вижу нарушения в консоли Chrome Dev Tools, но запрос к csp-endpoint
указанному в заголовке не запускается. Я попытался установить report-uri
атрибут, но это тоже не помогло. Я тестирую это на Chrome 84, который должен поддерживать report-to
директиву. Есть ли что-то, чего мне здесь не хватает?
Content-Security-Policy-Report-Only: default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' www.googletagmanager.com www.google-analytics.com; style-src 'self' data: 'unsafe-inline' www.tagmanager.google.com www.fonts.googleapis.com fast.fonts.net; img-src 'self' data: www.googletagmanager.com www.google-analytics.com; form-action 'self'; font-src 'self'; connect-src 'self'; report-to csp-endpoint
Report-To: {"endpoints":[{"url":"http://localhost:8080/myapp/csp-violation-report"}],"group":"csp-endpoint","max_age":10886400}
Ответ №1:
-
конечные точки для отправки отчетов должны иметь безопасный контекст (фактически — https:). Незащищенные конечные точки будут проигнорированы.
-
Существуют некоторые проблемы с разрешением имени локального хоста, не все пользовательские агенты считают его заслуживающим доверия.
localhost
Должно соответствовать определенным (пункт 5) правилам разрешения имен (см., пожалуйста, Пусть «localhost» будет обновлением RFC localhost).
Кратко — попробуйте использовать https://127.0.0.1:8080/myapp/csp-violation-report
. Для Chrome может быть достаточно безопасного http s: https://localhost:8080/myapp/csp-violation-report
(Chrome 84 поддерживает директиву report-to, но Firefox — нет).
Комментарии:
1. Добавляя к этому 2 проблемы с отладкой, с которыми я столкнулся при реализации этого на сервере apache. 1. даже если json.org/json-en.html говорит, что одинарные кавычки не разрешены в JSON, при реализации
Report-To
заголовка я смог (и мог использовать только) одинарные кавычки:Header always set Report-To "{'group': 'csp-endpoint', 'max_age': 10886400, 'url': '/csp-violation-report-endpoint.php'}"
. 2. Блокировщики рекламы на стороне клиента могут заблокировать СООБЩЕНИЕ, чтобы сообщить о нарушении CSP. У меня были проблемы с uBlock при тестировании моего решения, но отключение uBlock работало нормально.