Mencegah XSS dengan Content Security Policy (CSP): Panduan Teknis

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

DirektifFungsi
default-srcKebijakan fallback untuk semua tipe konten.
script-srcMembatasi sumber eksekusi JavaScript.
style-srcMembatasi sumber file CSS.
img-srcMembatasi sumber gambar.
connect-srcMembatasi target fetch/XHR/WebSocket.
object-srcMembatasi plugin seperti Flash (sebaiknya 'none').

Strategi Pencegahan XSS yang Efektif

  1. Hindari 'unsafe-inline': Jangan pernah menggunakan 'unsafe-inline' dalam script-src karena ini meniadakan perlindungan XSS.
  2. Gunakan Nonce atau Hash: Jika Anda harus menjalankan skrip inline, gunakan atribut nonce (number used once) yang unik untuk setiap request.
  3. Strict CSP: Implementasikan kebijakan berbasis strict-dynamic untuk mempermudah pengelolaan skrip pihak ketiga yang terpercaya.
  4. Report-Only Mode: Gunakan header Content-Security-Policy-Report-Only untuk 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.