CSP Praktis: Directive yang Benar-Benar Dipakai
Content Security Policy berguna kalau dimulai sebagai report-only dan dilonggarkan secukupnya. Policy ketat yang mematahkan situs akan dimatikan orang.
CSP adalah header yang memberitahu browser sumber mana yang boleh memuat script, style, gambar, dan lainnya. Tujuannya mempersempit dampak XSS: script yang disuntikkan dari domain penyerang tidak akan dieksekusi.
Directive yang benar-benar berdampak: default-src sebagai fallback, script-src untuk JavaScript, style-src untuk CSS. Tiga itu menutup sebagian besar risiko. Sisanya (img-src, connect-src, frame-ancestors) menambal sisa.
Yang membuat CSP gagal di praktik: policy ketat langsung. script-src 'self' mematikan inline script, dan hampir semua aplikasi punya inline script dari framework atau analitik. Situs rusak, tim mematikan CSP, dan tidak kembali.
Urutan yang bekerja: mulai dengan Content-Security-Policy-Report-Only. Header ini tidak memblokir apa pun, hanya melaporkan pelanggaran. Kumpulkan laporan beberapa minggu, lihat sumber apa yang sebenarnya dipakai, lalu susun policy yang mengizinkannya.
Dua jebakan: Satu, nonce dan hash butuh perubahan server per request. Untuk situs statis, itu tidak tersedia, jadi 'unsafe-inline' sering terpaksa dipakai — dan itu melemahkan sebagian besar manfaat script-src. Dua, frame-ancestors menggantikan X-Frame-Options, dan ia tidak punya fallback di browser lama. Untuk klikjacking, kirim keduanya.
CSP bukan pengganti sanitasi input. Ia lapisan pertahanan kedua yang membatasi kerusakan, bukan mencegah penyuntikan.