Kluczowe dyrektywy
- default-src — domyślna polityka dla wszystkich typów zasobów.
- script-src / style-src — źródła skryptów i stylów; nowoczesne polityki używają nonce lub hashy zamiast list domen.
- frame-ancestors — kto może osadzić stronę w iframe (ochrona przed clickjackingiem).
- report-to / report-uri — raportowanie naruszeń polityki do wskazanego endpointu.
Jak wdrażać bezpiecznie
Zacznij od trybu Content-Security-Policy-Report-Only, który tylko raportuje naruszenia bez blokowania, przeanalizuj raporty i dopiero potem egzekwuj politykę. Unikaj 'unsafe-inline' i szerokich whitelist — rekomendowany kierunek to strict CSP oparty na nonce z 'strict-dynamic'.
Przykład
Polityka startowa w trybie Report-Only — pozwala zebrać naruszenia bez blokowania skryptów na produkcji.
Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self' 'nonce-abc123' 'strict-dynamic'; style-src 'self' 'nonce-abc123'; report-uri /csp-report<script nonce="abc123" src="/app.js"></script>Źródła i dalsza lektura
- MDN — Content Security Policy (CSP) dokumentacja
- W3C — Content Security Policy Level 3 standard
- OWASP — CSP Cheat Sheet dokumentacja