Mekanisme Kerja CSP dalam Mitigasi XSS
Content Security Policy (CSP) adalah lapisan keamanan tambahan yang mendeteksi dan memitigasi serangan Cross-Site Scripting (XSS) serta injeksi data. CSP bekerja dengan membatasi sumber daya (seperti skrip, gambar, atau stylesheet) yang diizinkan untuk dimuat oleh browser. Dengan menerapkan kebijakan yang ketat, browser akan menolak eksekusi skrip berbahaya yang disuntikkan oleh penyerang.
Implementasi Header HTTP
Untuk mengaktifkan CSP, server harus mengirimkan header HTTP Content-Security-Policy. Berikut adalah contoh konfigurasi dasar yang memblokir skrip inline dan hanya mengizinkan skrip dari domain asal:
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none';Tabel Arahan Utama CSP
| Direktif | Fungsi |
|---|---|
| default-src | Kebijakan fallback untuk semua tipe konten. |
| script-src | Membatasi sumber eksekusi JavaScript. |
| style-src | Membatasi sumber file CSS. |
| img-src | Membatasi sumber gambar. |
| connect-src | Membatasi target fetch/XHR/WebSocket. |
| object-src | Membatasi plugin seperti Flash (sebaiknya 'none'). |
Strategi Pencegahan XSS yang Efektif
- Hindari 'unsafe-inline': Jangan pernah menggunakan
'unsafe-inline'dalamscript-srckarena ini meniadakan perlindungan XSS. - Gunakan Nonce atau Hash: Jika Anda harus menjalankan skrip inline, gunakan atribut
nonce(number used once) yang unik untuk setiap request. - Strict CSP: Implementasikan kebijakan berbasis
strict-dynamicuntuk mempermudah pengelolaan skrip pihak ketiga yang terpercaya. - Report-Only Mode: Gunakan header
Content-Security-Policy-Report-Onlyuntuk menguji kebijakan tanpa memblokir konten secara langsung, guna memantau pelanggaran di log server.
Troubleshooting dan Monitoring
Jika aplikasi Anda mengalami kendala setelah penerapan CSP, periksa konsol browser (F12). Browser akan memberikan pesan kesalahan spesifik yang menunjukkan sumber daya mana yang diblokir oleh kebijakan tersebut. Pastikan untuk selalu memvalidasi kebijakan Anda di lingkungan staging sebelum diterapkan ke produksi.