Digital Transformation
CSP (Content Security Policy)
TL;DR: Content Security Policy (CSP) adalah header HTTP keamanan yang memberitahu browser sumber mana saja yang boleh memuat script, gaya, gambar, dan iframe di sebuah halaman. CSP ketat dapat memblokir mayoritas serangan cross-site scripting (XSS) yang masih menjadi celah top di OWASP Top 10. Implementasi modern memakai nonce atau hash, bukan whitelist domain.
Apa itu CSP?
CSP bekerja sebagai pagar keamanan tingkat browser. Saat server mengirim header Content-Security-Policy, browser akan menolak resource yang tidak masuk daftar yang diizinkan. Misalnya, kalau policy berkata script-src 'self', browser tidak akan menjalankan script dari CDN luar yang tidak terdaftar.
CSP melengkapi langkah keamanan lain seperti SSL/HTTPS dan rate limiting. HTTPS mengenkripsi koneksi, CSP mengontrol apa yang boleh dieksekusi setelah halaman dimuat.
Direktif Utama
| Direktif | Fungsi |
|---|---|
default-src | Fallback untuk direktif lain yang tidak diset |
script-src | Sumber JavaScript yang diizinkan |
style-src | Sumber CSS yang diizinkan |
img-src | Sumber gambar |
frame-ancestors | Siapa yang boleh meng-embed halaman lewat iframe |
connect-src | Endpoint untuk fetch, XHR, WebSocket |
Praktik modern memakai nonce per request: script-src 'nonce-abc123'. Server menyelipkan nonce ke tag script yang sah dan browser memblokir script tanpa nonce yang valid.
Kenapa Penting?
OWASP masih mencatat XSS sebagai salah satu kerentanan paling sering dieksploitasi. Tanpa CSP, sebuah komentar yang tidak di-sanitize bisa menyisipkan script untuk mencuri cookie session pengguna. Untuk website bisnis Indonesia yang menyimpan data pelanggan, CSP adalah lapisan pertahanan murah dan tidak mengubah arsitektur. Dokumentasi lengkap di MDN Web Docs.
Pertanyaan Umum
Apakah CSP berdampak pada performa?
Tidak signifikan. Header tambahan berukuran kecil dan validasi dilakukan browser secara native. Yang berpotensi mahal adalah implementasi nonce dinamis di server.
Bagaimana cara mulai tanpa membuat website rusak?
Gunakan mode Content-Security-Policy-Report-Only lebih dulu. Browser hanya mencatat pelanggaran tanpa memblokir, sehingga Anda bisa memetakan semua resource sebelum enforce.