CSP říká prohlížeči, odkud smí načítat skripty, styly, obrázky. Správně nastavený CSP zastaví většinu XSS útoků.
Základní CSP¶
Content-Security-Policy: default-src ‘self’; script-src ‘self’ ‘nonce-abc123’; style-src ‘self’ ‘unsafe-inline’; img-src ‘self’ data: https:; connect-src ‘self’ https://api.example.com; frame-ancestors ‘none’;
Nonce-based CSP¶
import secrets @app.after_request def add_csp(response): nonce = secrets.token_urlsafe(32) response.headers[‘Content-Security-Policy’] = f”script-src ‘self’ ‘nonce-{nonce}’” return response
Postupné nasazení¶
- Report-Only s permisivní politikou
- Analyzujte reporty
- Zpřísněte politiku
- Přepněte na enforcement
- Monitorujte reporty
Klíčový takeaway¶
CSP je nejúčinnější obrana proti XSS. Začněte s Report-Only, postupně zpřísňujte.