Digital Transformation

Subresource Integrity (SRI)

Vito Atmo
Vito Atmo·25 Mei 2026·0 kali dibaca·2 min baca

TL;DR: Subresource Integrity (SRI) adalah fitur keamanan browser yang memverifikasi integritas file eksternal (script atau CSS) lewat hash kriptografi. Browser akan menolak eksekusi file jika hash tidak cocok. Penting untuk website yang load library dari CDN pihak ketiga.

Apa itu SRI?

SRI bekerja dengan menambahkan atribut integrity di tag <script> atau <link>. Atribut ini berisi hash (SHA-256, SHA-384, atau SHA-512) dari file yang diharapkan. Saat browser mengunduh file, browser menghitung hash dan membandingkan. Jika berbeda, file ditolak dan tidak dijalankan.

Contoh: <script src="https://cdn.example.com/jquery.js" integrity="sha384-xxx" crossorigin="anonymous"></script>. Jika ada penyerang yang mengganti file di CDN, hash akan beda dan browser memblokir eksekusi.

Kapan SRI Wajib?

SkenarioPakai SRI?
Library dari CDN publik (jsDelivr, cdnjs)Wajib
Asset dari CDN sendiri (Vercel, Cloudflare)Opsional
File dari domain sendiriTidak perlu
Script versioned dengan hash di URLTetap dianjurkan

SRI biasanya dipasangkan dengan CSP untuk pertahanan berlapis. CSP membatasi dari mana script boleh di-load, SRI memastikan isinya tidak diubah.

Kenapa Penting?

MDN Web Docs menjelaskan SRI mitigasi serangan supply chain di mana CDN pihak ketiga dikompromikan. Pada audit website Ryandi Pratama yang load 3 library dari cdnjs, saya menambahkan SRI tag dan menutup celah injection tanpa mengubah fungsi widget. Marketer yang pakai CMS dengan widget eksternal (chat, analytics) wajib mengaudit script tags dan menambahkan integrity hash.

Pertanyaan Umum

Bagaimana cara generate hash SRI?

Pakai perintah openssl dgst -sha384 -binary file.js | openssl base64 -A atau tool online seperti srihash.org. Banyak CDN modern (jsDelivr, cdnjs) sudah menyediakan hash siap pakai.

Apa yang terjadi kalau file CDN di-update tanpa update hash?

Browser akan menolak file dan fitur yang bergantung padanya tidak jalan. Karena itu pakai SRI hanya untuk versioned URL, bukan URL @latest.

Bagikan