Content-Security-Policy с img-src 'self', ограничивает источники, откуда браузер может загружать изображения. Она разрешает загрузку изображений только с текущего домена и запрещает использование любых сторонних ресурсов.Однако такая политика может помешать правильной работе механизма перенаправления изображений на скрипт, поскольку прямое обращение к изображению становится невозможным.
Варианты решения
- Разрешить загрузку изображений с собственного домена и динамически генерируемых страниц:
Вместо строгого ограничения 'self', можно разрешить загрузку изображений с конкретного маршрута, где расположен твой скрипт.add_header Content-Security-Policy "img-src 'self' data: blob:";
Илиadd_header Content-Security-Policy "img-src 'self' http://yourdomain.com"; - Использовать CSP уровня "unsafe-inline":
Если ты доверяешь своему контенту и источникам, можно временно ослабить политику:add_header Content-Security-Policy "img-src *";
Но это снижает безопасность, так что лучше избегать такого подхода. - Отключить CSP для определенных маршрутов:
Если нужно отключить CSP только для определенного раздела сайта, можно использовать отдельные блоки location:location /images/ { add_header Content-Security-Policy ""; }
Итоговая конфигурация:
Рекомендуемая настройка, позволяющая загружать изображения с текущего домена и обеспечивая базовую защиту:
server {
listen 80;
server_name example.com;
root /var/www/html;
location ~* ^/images/(.+)$ {
rewrite ^/images/(.*)$ /show-image.php?img=$1 last;
}
# Конфигурация для обработки PHP-файлов
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
# Настройка Content Security Policy
add_header Content-Security-Policy "img-src 'self'";
}Такая конфигурация обеспечит баланс между безопасностью и функциональностью, позволяя поисковикам индексировать изображения, сохраняя базовые меры защиты.