Nonces CSP (par réponse)
Activez par site ([security] csp_nonce) l'injection d'un nonce différent à chaque réponse dans les <script>/<style> en ligne, via le HTMLRewriter natif, plus un en-tête Content-Security-Policy-Report-Only qui le référence. En report-only, rien n'est bloqué — c'est le premier palier sûr d'un déploiement CSP. Désactivé par défaut : les autres sites sont inchangés.
Astuce
En live sur webdesign29.net : le nonce de l'en-tête correspond au nonce du corps (même requête), diffère à chaque requête, et la page reste compressée (gzip) et fonctionnelle. Le corps mis en cache (ISR) varie par réponse, donc le cache de variantes compressées est contourné uniquement pour les sites opt-in. Voir aussi la démo
HTMLRewriter.Activation (opt-in)
# bext.config.toml — opt in (default off; report-only, never blocks)
[security]
csp_nonce = trueAu service de la réponse
// At each serve point (cache-hit + fresh), for an opted-in site, the PRISM
// pipeline injects a FRESH per-response nonce into inline <script>/<style>
// via the native HTMLRewriter, and sets a matching report-only header:
<script nonce="ea6100246424b38c10a05d61cf43a04e"> … </script>
<style nonce="ea6100246424b38c10a05d61cf43a04e"> … </style>
Content-Security-Policy-Report-Only:
script-src 'self' 'nonce-ea6100246424b38c10a05d61cf43a04e';
style-src 'self' 'nonce-ea6100246424b38c10a05d61cf43a04e'