У меня проблемы с моей Content-Security-Policy , которая обрабатывается пакетом bepsvpt / secure-headers .
После успешной загрузки файла на сервер S3 с Fineuploader плагин пытается загрузить миниатюрное изображение, отправляя запрос, подобный этому:
blob:http://b2b.local/085a1b81-0513-47a8-a334-fbc4eca4b365
Этот запрос блокируется моим CSP, который не позволяет отображать миниатюру и следующее сообщение в консоли:
отказался загружать изображение
'blob: http://b2b.local/085a1b81-0513-47a8-a334-fbc4eca4b365', потому что
он нарушает следующую директиву политики безопасности контента: "img-src
'self' http://*.google -analytics.com
http://businessmarketplace.s3.amazonaws.com http://b2b.dev
http://placehold.it http://mediaweek.com.au данные: ".
Моя конфигурация CSP выглядит следующим образом:
<?php
$protocol = 'https://';
if (! isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off') {
$protocol = 'http://';
}
return [
'x-content-type-options' => 'nosniff',
'x-download-options' => 'noopen',
'x-frame-options' => 'sameorigin',
'x-permitted-cross-domain-policies' => 'none',
'x-xss-protection' => '1; mode=block',
'referrer-policy' => 'unsafe-url',
'hsts' => [
'enable' => env('SECURITY_HEADER_HSTS_ENABLE', false),
'max-age' => 31536000,
'include-sub-domains' => true,
],
'hpkp' => [
'hashes' => false,
'include-sub-domains' => false,
'max-age' => 15552000,
'report-only' => false,
'report-uri' => null,
],
'custom-csp' => env('SECURITY_HEADER_CUSTOM_CSP', null),
'csp' => [
'report-only' => false,
'report-uri' => env('CONTENT_SECURITY_POLICY_REPORT_URI', false),
'upgrade-insecure-requests' => false,
'default-src' => [
'allow' => [
'player.vimeo.com',
],
'self' => true,
],
'script-src' => [
'allow' => [
$protocol.'ajax.googleapis.com',
$protocol.'code.jquery.com',
$protocol.'www.googletagmanager.com',
$protocol.'www.google-analytics.com',
$protocol.'www.google.com',
$protocol.'www.gstatic.com',
$protocol.'sachinchoolur.github.io',
$protocol.'cdnjs.cloudflare.com',
$protocol.'*.addthis.com',
$protocol.'*.addthisedge.com',
$protocol.'*.facebook.com',
],
'self' => true,
'unsafe-inline' => true,
'unsafe-eval' => true,
'data' => true,
],
'frame-src' => [
'allow' => [
'player.vimeo.com',
$protocol.'www.google.com',
$protocol.'*.addthis.com',
$protocol.'*.addthisedge.com',
]
],
'style-src' => [
'allow' => [
$protocol.'fonts.googleapis.com',
$protocol.'sachinchoolur.github.io',
$protocol.'code.jquery.com',
$protocol.'*.addthis.com',
$protocol.'*.addthisedge.com',
],
'self' => true,
'unsafe-inline' => true,
],
'img-src' => [
'allow' => [
$protocol.'*.google-analytics.com',
$protocol.'businessmarketplace.s3.amazonaws.com',
$protocol.'placehold.it',
$protocol.'mediaweek.com.au',
],
'self' => true,
'data' => true,
'blob' => true,
],
'font-src' => [
'allow' => [
$protocol.'fonts.gstatic.com',
],
'self' => true,
'data' => true,
],
'object-src' => [
'allow' => [],
'self' => true,
],
],
];
Обратите внимание, что я устанавливаю параметры self, data и blob для политики img-src в true .
При удалении всей конфигурации для политики img-src и установке default-src на *
я получаю плагин для правильного отображения эскизов, но по сути, я пропускаю весь смысл, разрешая все типы запросов.
Что не так в моей конфигурации, которая препятствует загрузке моих миниатюр, когда атрибуты 'self' и blob: установлены в true ?