Digital Transformation
Subresource Integrity (SRI)
TL;DR: Subresource Integrity (SRI) adalah fitur browser yang mencantumkan hash SHA-384 atau SHA-512 di tag
<script>atau<link>. Browser menolak file dari CDN jika hash-nya berbeda dengan yang ditulis di HTML. Tujuannya: melindungi pengguna dari skrip pihak ketiga yang sudah dimanipulasi tanpa harus berhenti memakai CDN.
Apa itu Subresource Integrity?
Subresource Integrity adalah atribut integrity pada tag <script> atau <link> yang berisi hash kriptografis dari file aslinya. Browser akan menghitung ulang hash file yang diunduh dari CDN, lalu membandingkannya. Jika berbeda, file tidak dieksekusi dan halaman tetap aman. SRI bekerja sebagai lapisan kedua setelah [CSP](/glosarium/csp-content-security-policy) untuk konten dari domain eksternal.
Analoginya seperti segel hologram pada produk farmasi. Walau pengiriman dititipkan ke pihak ketiga, segel rusak berarti barang ditolak.
Cara Kerja Singkat
| Langkah | Detail |
|---|---|
| 1. Hitung hash | Pakai openssl dgst -sha384 -binary file.js | openssl base64 -A |
| 2. Tulis di HTML | <script src="..." integrity="sha384-..." crossorigin="anonymous"> |
| 3. Browser verifikasi | Hash dihitung ulang saat unduh, dibandingkan |
| 4. Hasil | Cocok = jalan, beda = ditolak |
Atribut crossorigin="anonymous" wajib karena browser perlu izin CORS untuk membaca file lengkap dari CDN.
Kenapa Penting?
CDN populer seperti jsDelivr, unpkg, atau Google Fonts pernah menjadi vektor serangan supply chain. Ketika satu file di CDN dimodifikasi, ribuan website yang memuatnya akan ikut terinfeksi. SRI memastikan website Anda tidak menjadi korban berikutnya tanpa harus self-host semua dependency. Untuk bisnis di Indonesia yang sering pakai CDN gratis demi performa, SRI adalah trade-off keamanan dengan biaya implementasi nol.
Dokumentasi resmi tersedia di MDN Web Docs.
Pertanyaan Umum
Apakah SRI menggantikan CSP?
Tidak. CSP membatasi sumber yang boleh dimuat, sedangkan SRI memvalidasi isi file. Keduanya saling melengkapi.
Apa risiko utama SRI?
File CDN yang sah berubah versi tanpa Anda update hash, sehingga halaman patah. Solusinya kunci versi spesifik (misalnya jquery@3.7.1) bukan latest.
Istilah Terkait