Контекст: CSP настраивается в Caddyfile (reverse proxy) и блокирует неразрешённые источники.
Суть: Фронтенд использует Leaflet с тайлами OpenStreetMap (без внешних скриптов карт).
Content-Security-Policy: default-src 'self';
script-src 'self' 'unsafe-inline';
style-src 'self' 'unsafe-inline';
img-src 'self' data: blob: https:;
font-src 'self' data:;
connect-src 'self' wss: https://api.{$DOMAIN};
frame-ancestors 'none';
Почему именно так:
'unsafe-inline' для script — требуется Next.js (hydration)frame-ancestors 'none' — защита от clickjacking (дублирует X-Frame-Options)connect-src wss: — для WebSocket посетителейЧто НЕ должно быть в production CSP:
'unsafe-inline' для script лучше убрать, если Next.js в standalone режиме это позволяетhttps: для img-src — можно сузить до конкретных доменов (cdn.photoplaces.ru)Связанные заметки: [[deploy-production-readiness]], [[atomic-websocket-origin-check]] Источник: Настройка Caddyfile для production
#security #frontend #devops #caddy