To protect from XSS, configure CSP with nonce: (1) generate nonce each request ($nonce = base64_encode(random_bytes(16))); (2) add to header script-src 'nonce-{$nonce}'; (3) set nonce='{$nonce}' attribute on every inline <script>. No unsafe-inline.
$nonce = base64_encode(random_bytes(16));. Must be a new nonce per request.header("Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-{$nonce}'; style-src 'self' 'nonce-{$nonce}'; object-src 'none'; base-uri 'self'");<script nonce="<?= $nonce ?>">console.log('ok');</script>. Without nonce the script will be blocked.Content-Security-Policy-Report-Only: ...; report-uri /csp-report.php. Collect violations before enforcing.No for quick check. For continuous monitoring — free account.