CSP là HTTP header khai báo danh sách nguồn được phép load script/style/image — lớp defense in depth chống XSS.
- Directives chính —
default-src(fallback cho directive không khai báo),script-src,style-src,img-src,connect-src(fetch/XHR),frame-src,form-action; giá trị:'self','none', domain cụ thể. - Strict CSP với nonce —
script-src 'nonce-{random}': mỗi request sinh nonce ngẫu nhiên, inline script chỉ chạy khi có attribute nonce khớp — chống injection tốt hơn whitelist domain; dùng hashsha256-{base64}cho inline script tĩnh. - Report-Only mode — header
Content-Security-Policy-Report-Onlyquan sát violation mà không chặn;report-to/report-urinhận báo cáo JSON. Quy trình chuẩn: Report-Only → thu thập violation → fix → enforce. - Trusted Types —
require-trusted-types-for 'script'chặn DOM XSS bằng cách ép các thao tác DOM sink phải qua typed API. - Lỗi thường gặp — bật
'unsafe-inline'+'unsafe-eval'cho toàn site khiến CSP gần như vô dụng — hay xảy ra khi copy example mà không hiểu.