Digital Transformation
X-Content-Type-Options (Header HTTP)
TL;DR: X-Content-Type-Options dengan nilai
nosniffadalah header HTTP yang menyuruh browser percaya pada tipe MIME yang dikirim server, tanpa menebak dari isi file. Tanpa header ini, file yang seharusnya gambar atau dokumen bisa dieksekusi sebagai JavaScript jika kontennya menyerupai skrip. Header ini wajib untuk website yang menerima upload pengguna seperti e-commerce, marketplace, dan platform UGC.
Apa itu X-Content-Type-Options?
X-Content-Type-Options adalah header keamanan HTTP yang dirancang untuk menutup celah MIME sniffing. MIME sniffing adalah perilaku browser lama yang mencoba menebak tipe konten file dari beberapa byte pertama isinya, bukan dari header Content-Type yang dikirim server. Saat halaman menampilkan file dengan tipe text/plain tapi isinya menyerupai HTML berisi skrip, browser bisa "memutuskan" untuk merendernya sebagai HTML lalu mengeksekusi skrip tersebut. Akibatnya, file yang terlihat aman menjadi jalur masuk serangan XSS.
Header ini hanya punya satu nilai yang relevan: nosniff. Nilai ini memerintahkan browser untuk berhenti menebak dan mempercayai header Content-Type apa adanya. Untuk lapisan pertahanan XSS yang lebih luas, kombinasikan dengan Content Security Policy dan Subresource Integrity.
Cara Kerja vs Tanpa Header
| Skenario | Tanpa nosniff | Dengan nosniff |
|---|---|---|
Upload gambar yang berisi tag <script> | Browser bisa menafsirkannya sebagai HTML | Browser tetap memperlakukannya sebagai gambar |
| File CSS yang berisi JavaScript | Browser bisa mengeksekusi skrip | Hanya CSS yang valid yang akan dimuat |
Dokumen tanpa header Content-Type | Browser menebak | Browser menolak merender |
Detail spesifikasi tersedia di referensi MDN tentang X-Content-Type-Options.
Kenapa Penting untuk Bisnis Indonesia?
Saya pernah membantu meninjau platform marketplace yang mengizinkan upload foto produk. Karena belum memasang nosniff, file yang lolos validasi ekstensi tetap berhasil mengeksekusi skrip saat dibuka pengguna lain. Dampaknya bukan hanya teknis, tapi juga reputasi: notifikasi keamanan dari Google Chrome ke pengunjung membuat trust signal jatuh. Memasang X-Content-Type-Options: nosniff adalah satu baris konfigurasi yang menutup salah satu kelas kerentanan paling lama di web. Untuk bisnis yang menerima upload, header ini termasuk wajib dipasang bersama CSP.
Pertanyaan Umum
Apakah nosniff bisa membuat aset legitimate gagal dimuat?
Bisa, jika server salah mengirim Content-Type. Solusinya: pastikan konfigurasi MIME di Nginx, Apache, atau Next.js benar untuk semua tipe file yang dilayani.
Apakah header ini cukup untuk mencegah XSS?
Tidak. Header ini hanya menutup satu vektor serangan. Strategi lengkap memerlukan CSP, sanitasi input, dan validasi server-side.
Istilah Terkait