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
| Nilai | Deskripsi |
|---|---|
| '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.