Mengenal Script-src Directive dalam Content Security Policy (CSP)

Definisi dan Fungsi Script-src Directive

script-src adalah sebuah direktif dalam kebijakan keamanan konten (Content Security Policy atau CSP) yang berfungsi untuk membatasi sumber daya skrip mana yang diizinkan untuk dimuat dan dieksekusi oleh browser pada sebuah halaman web. Penggunaan direktif ini merupakan pertahanan utama untuk memitigasi serangan Cross-Site Scripting (XSS) dan injeksi kode berbahaya lainnya.

Dengan mendefinisikan script-src, pengembang dapat menginstruksikan browser untuk hanya mengeksekusi skrip dari domain tepercaya, mencegah eksekusi skrip inline, serta memblokir penggunaan fungsi eval() yang berisiko tinggi.

Sintaks dan Implementasi

Implementasi script-src dilakukan melalui header HTTP Content-Security-Policy. Berikut adalah contoh konfigurasi dasar:

Content-Security-Policy: script-src 'self' https://trusted-cdn.com;

Dalam contoh di atas, browser hanya akan mengizinkan skrip yang berasal dari domain yang sama ('self') dan dari https://trusted-cdn.com.

Tabel Opsi Nilai Script-src

NilaiDeskripsi
'self'Mengizinkan skrip dari origin yang sama.
'unsafe-inline'Mengizinkan skrip inline (tidak disarankan).
'unsafe-eval'Mengizinkan penggunaan eval() dan fungsi string-to-code.
'none'Memblokir semua skrip.
'nonce-value'Hanya mengizinkan skrip dengan atribut nonce yang cocok.
'sha256-...'Mengizinkan skrip berdasarkan hash kontennya.

Praktik Terbaik Keamanan

Untuk mencapai tingkat keamanan maksimal, hindari penggunaan 'unsafe-inline' dan 'unsafe-eval'. Gunakan pendekatan nonce (number used once) atau hash untuk memvalidasi skrip yang sah. Jika aplikasi Anda menggunakan framework modern seperti Vue.js, pastikan konfigurasi CSP selaras dengan cara framework tersebut memuat komponen dan aset agar tidak terjadi pemblokiran yang tidak disengaja pada fungsi aplikasi yang sah.

Troubleshooting Umum

Jika skrip Anda tidak berjalan, periksa konsol browser (F12). Browser akan memberikan pesan kesalahan yang spesifik jika sebuah skrip diblokir oleh kebijakan CSP. Pastikan semua domain pihak ketiga yang diperlukan telah didaftarkan dalam direktif script-src Anda.