Apa itu "X-Content-Type-Options = nosniff"?

291

Saya melakukan beberapa pengujian penetrasi pada localhost saya dengan OWASP ZAP, dan terus melaporkan pesan ini:

Header Anti-MIME-Sniffing X-Content-Type-Options tidak disetel ke 'nosniff'

Pemeriksaan ini khusus untuk Internet Explorer 8 dan Google Chrome. Pastikan setiap halaman menetapkan header Tipe Konten dan X-CONTENT-TYPE-OPTIONS jika header Tipe Konten tidak diketahui

Saya tidak tahu apa artinya ini, dan saya tidak dapat menemukan apa pun secara online. Saya sudah mencoba menambahkan:

<meta content="text/html; charset=UTF-8; X-Content-Type-Options=nosniff" http-equiv="Content-Type" />

tetapi saya masih mendapatkan peringatan.

Apa cara yang benar untuk mengatur parameter?

Koffeehaus
sumber

Jawaban:

178

Ini mencegah browser melakukan sniffing tipe MIME. Sebagian besar browser sekarang menghargai header ini, termasuk Chrome / Chromium, Edge, IE> = 8.0, Firefox> = 50 dan Opera> = 13. Lihat:

https://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx?Redirected=true

Mengirim tajuk respons X-Content-Type-Options dengan nilai nosniff akan mencegah Internet Explorer dari MIME-mengendus respons dari tipe konten yang dideklarasikan.

EDIT:

Oh dan, itu header HTTP, bukan opsi tag meta HTML.

Lihat juga: http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx

Remi Gacogne
sumber
22
Anda harus menyebutkan itu for servers hosting untrusted content. Untuk situs web yang tidak menampilkan konten dari unggahan pengguna, Anda tidak perlu mengatur ini.
machineaddict
12
@machineaddict, Salah . Sniffing akan terjadi terlepas dari apakah kontennya tepercaya atau tidak tepercaya. Lihat security.stackexchange.com/a/11761/2379 . Ini akan merusak situs Anda dengan cara yang halus. Nonaktifkan selalu mengendus jika Anda tidak menyukai kejutan.
Pacerier
33
Saya pikir Anda melewatkan bagian "Apa itu sniffing tipe MIME?"
VarunAgw
3
firefoxmendukung tajuk ini sekarang juga: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
VasiliNovikov
'Menegakkan' header bisa disalahartikan sebagai 'membutuhkan', saya mengubahnya menjadi 'menghormati'.
Charlie
135

Deskripsi

Mengatur X-Content-Type-Optionsheader respons HTTP server untuk nosniffmenginstruksikan browser untuk menonaktifkan konten atau sniffing MIME yang digunakan untuk mengganti Content-Typeheader respons untuk menebak dan memproses data menggunakan tipe konten implisit. Meskipun ini bisa nyaman dalam beberapa skenario, itu juga dapat menyebabkan beberapa serangan yang tercantum di bawah ini. Mengkonfigurasi server Anda untuk mengembalikan X-Content-Type-Optionsheader respons HTTP yang diatur ke nosniffakan menginstruksikan browser yang mendukung sniffing MIME untuk menggunakan yang disediakan server Content-Typedan tidak menafsirkan konten sebagai tipe konten yang berbeda.

Dukungan Browser

The X-Content-Type-Optionsrespon header HTTP didukung di Chrome, Firefox dan Ujung serta browser lainnya. Dukungan browser terbaru tersedia di Tabel Kompatibilitas Browser Mozilla Developer Network (MDN) untuk X-Content-Type-Options:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options

Serangan Diatasi

  1. MIME Confusion Attack memungkinkan serangan melalui situs konten yang dibuat pengguna dengan memungkinkan pengguna mengunggah kode berbahaya yang kemudian dieksekusi oleh browser yang akan menafsirkan file menggunakan tipe konten alternatif, misalnya implisitapplication/javascriptvs eksplisittext/plain. Hal ini dapat mengakibatkan serangan "drive-by download" yang merupakan vektor serangan umum untuk phishing. Situs yang menampung konten yang dibuat pengguna harus menggunakan tajuk ini untuk melindungi penggunanya. Ini disebutkan oleh VeraCode dan OWASP yang mengatakan sebagai berikut:

    Ini mengurangi paparan terhadap serangan unduhan drive-by dan situs yang menyajikan konten yang diunggah pengguna yang, dengan penamaan yang cerdas, dapat diperlakukan oleh MSIE sebagai file HTML dinamis yang dapat dieksekusi atau dinamis.

  2. Hotlinking tidak resmi juga dapat diaktifkan denganContent-Typemengendus. Dengan menautkan ke situs-situs dengan sumber daya untuk satu tujuan, misalnya melihat, aplikasi dapat mengandalkan sniffing tipe konten dan menghasilkan banyak lalu lintas di situs untuk tujuan lain di mana mungkin melanggar persyaratan layanan mereka, misalnya GitHub menampilkan kode JavaScript untuk dilihat, tetapi tidak untuk eksekusi:

    Beberapa pengguna bukan manusia yang tidak manusiawi (yaitu komputer) telah mengambil "hotlinking" aset melalui fitur tampilan mentah - menggunakan URL mentah sebagai srctanda <script>atau <img>tag. Masalahnya adalah ini bukan aset statis. Tampilan file mentah, seperti tampilan lainnya di aplikasi Rails, harus dirender sebelum dikembalikan ke pengguna. Ini dengan cepat menambah banyak kerugian pada kinerja. Di masa lalu, kami dipaksa untuk memblokir konten populer yang disajikan dengan cara ini karena hal itu membuat server kami semakin tegang.

Grokify
sumber
Siapa yang berpikir bahwa memutuskan untuk mengabaikan tipe konten eksplisit dan menggunakan karya tebakan akan menjadi ide yang bagus? omg ...
Sam Sirry
105
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

Header ini mencegah serangan berbasis "mime". Header ini mencegah Internet Explorer dari MIME - mengendus respons dari tipe konten yang dinyatakan saat header memerintahkan browser untuk tidak mengesampingkan tipe konten respons. Dengan opsi nosniff, jika server mengatakan kontennya adalah teks / html, browser akan menjadikannya sebagai teks / html.

http://stopmalvertising.com/security/securing-your-website-with-.htaccess/.htaccess-http-headers.html

Won Jun Bae
sumber
1
Bukankah ini seharusnya selalu demikian ?! Saya merasa aneh bahwa browser akan mencoba untuk bertindak "pintar" dan mengabaikan header tipe konten yang eksplisit.
Sam Sirry
25

Untuk server Microsoft IIS, Anda dapat mengaktifkan header ini melalui web.configfile Anda :

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Content-Type-Options"/>
        <add name="X-Content-Type-Options" value="nosniff"/>
      </customHeaders>
    </httpProtocol>
</system.webServer>

Dan kamu sudah selesai.

Silahkan masuk
sumber
3
Dimungkinkan juga untuk mengatur header kustom di IIS, tetapi solusi Anda lebih baik karena dapat dikontrol sumber daripada dikelola konfigurasi.
ajeh
9

Header HTTP respons X-Content-Type-Options adalah penanda yang digunakan oleh server untuk menunjukkan bahwa tipe MIME yang diiklankan dalam header Tipe-Konten tidak boleh diubah dan diikuti. Ini memungkinkan untuk memilih tidak menggunakan sniffing tipe MIME, atau, dengan kata lain, ini adalah cara untuk mengatakan bahwa webmaster mengetahui apa yang mereka lakukan.

Sintaks:

X-Content-Type-Options: nosniff

Arahan:

nosniff Memblokir permintaan jika tipe yang diminta adalah 1. "style" dan tipe MIME bukan "text / css", atau 2. "script" dan tipe MIME bukan tipe JavaScript MIME.

Catatan: nosniff hanya berlaku untuk tipe "script" dan "style". Menerapkan juga nosniff pada gambar ternyata tidak sesuai dengan situs web yang ada.

Spesifikasi:

https://fetch.spec.whatwg.org/#x-content-type-options-header

Sahil Aggarwal
sumber