Digital Transformation
Trusted Types API
TL;DR: Trusted Types API adalah API browser yang memaksa developer membungkus string HTML, URL, atau script ke dalam objek "Trusted Type" sebelum dimasukkan ke DOM. Ini menutup celah DOM XSS yang sering luput dari Content Security Policy biasa. Diaktifkan via header CSP
require-trusted-types-for 'script'.
Apa itu Trusted Types API?
Trusted Types API adalah lapisan pertahanan keamanan front-end yang mencegah injeksi script berbahaya lewat sink DOM seperti element.innerHTML, eval(), atau document.write(). Saat diaktifkan, browser menolak semua string mentah dan hanya menerima objek hasil sanitasi yang dibungkus policy bernama.
Bayangkan halaman komentar yang menampilkan input pengguna lewat innerHTML. Tanpa Trusted Types, payload <img src=x onerror=alert(1)> akan dieksekusi. Dengan Trusted Types, browser memblokir assignment sampai string itu lewat policy sanitasi yang sudah didaftarkan. Lihat juga Content Security Policy sebagai pelengkap.
Cara Kerja Trusted Types
| Komponen | Fungsi |
|---|---|
| Policy | Fungsi sanitasi yang didaftarkan via trustedTypes.createPolicy() |
| TrustedHTML, TrustedScript, TrustedScriptURL | Objek hasil policy yang aman dipakai di sink |
| CSP header | require-trusted-types-for 'script' mengaktifkan enforcement |
| Default policy | Fallback policy untuk handle string mentah dari library pihak ketiga |
Praktik standar di industri menyarankan satu policy ketat per modul, bukan satu policy global. Library populer seperti DOMPurify sudah punya integrasi resmi.
Kenapa Penting?
DOM-based XSS adalah celah paling sering luput di audit keamanan, terutama di Single Page Application yang sering manipulasi DOM dengan data eksternal. Dari pengalaman Vito Atmo menerapkan ini di proyek LMS Atmo, jumlah finding XSS di audit Acunetix turun dari belasan ke nol setelah Trusted Types aktif penuh. Dokumentasi resmi tersedia di web.dev Trusted Types.
Pertanyaan Umum
Apakah Trusted Types menggantikan Content Security Policy?
Tidak. Trusted Types adalah pelengkap. CSP biasa memblokir loading script eksternal yang tidak dipercaya. Trusted Types melindungi sink DOM dari injeksi inline. Pasang keduanya bersama lewat Content Security Policy header.
Apakah semua browser mendukung?
Per April 2026, Chrome dan Edge mendukung penuh, Firefox dan Safari masih partial. Mulai pakai di report-only mode dulu, lalu pindah ke enforcing setelah temuan policy violation nol selama 14 hari.
Istilah Terkait