“ X-Content-Type-Options = nosniff” คืออะไร?


292

ฉันกำลังทำการทดสอบการเจาะระบบบน localhost ของฉันด้วย OWASP ZAP และมันรายงานข้อความนี้ต่อไป

ไม่ได้ตั้งค่าส่วนหัว Anti-MIME-Sniffing X-Content-Type-Options เป็น 'nosniff'

การตรวจสอบนี้เป็นการเฉพาะสำหรับ Internet Explorer 8 และ Google Chrome ตรวจสอบให้แน่ใจว่าแต่ละหน้าตั้งค่าส่วนหัวของประเภทเนื้อหาและ X-CONTENT-TYPE-OPTIONS หากไม่ทราบส่วนหัวของประเภทเนื้อหา

ฉันไม่รู้ว่าสิ่งนี้หมายถึงอะไรและฉันไม่พบสิ่งใดทางออนไลน์ ฉันได้ลองเพิ่ม:

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

แต่ฉันยังคงได้รับการแจ้งเตือน

วิธีการตั้งค่าพารามิเตอร์ที่ถูกต้องคืออะไร?

คำตอบ:


179

มันป้องกันไม่ให้เบราว์เซอร์ทำการดมกลิ่นชนิด MIME ขณะนี้เบราว์เซอร์ส่วนใหญ่เคารพส่วนหัวนี้รวมถึง Chrome / Chromium, Edge, IE> = 8.0, Firefox> = 50 และ Opera> = 13. ดู:

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

การส่งส่วนหัวการตอบสนอง X-Content-Type-Options ใหม่ด้วยค่า nosniff จะป้องกันไม่ให้ Internet Explorer จาก MIME- ดมกลิ่นการตอบสนองจากเนื้อหาที่ประกาศไว้

แก้ไข:

โอ้และนั่นคือส่วนหัว HTTP ไม่ใช่ตัวเลือกเมตาแท็ก HTML

ดูเพิ่มเติมที่: http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx


22
for servers hosting untrusted contentคุณต้องพูดถึงว่าเป็น สำหรับเว็บไซต์ที่ไม่แสดงเนื้อหาจากการอัปโหลดโดยผู้ใช้คุณไม่จำเป็นต้องตั้งค่านี้
machineaddict

12
@machineaddict, ผิด การดมกลิ่นจะเกิดขึ้นไม่ว่าเนื้อหานั้นจะเชื่อถือได้หรือไม่น่าเชื่อถือก็ตาม ดูsecurity.stackexchange.com/a/11761/2379 มันจะทำลายเว็บไซต์ของคุณในรูปแบบที่ลึกซึ้ง ปิดใช้งานการดมเสมอหากคุณไม่ชอบความประหลาดใจ
Pacerier

33
ฉันคิดว่าคุณพลาดส่วน "การดมกลิ่นแบบ MIME คืออะไร"
VarunAgw

3
firefoxสนับสนุนส่วนหัวนี้ในขณะนี้เช่นกัน: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/
......

'บังคับใช้' ส่วนหัวอาจเข้าใจผิดว่า 'ต้องการ' ฉันเปลี่ยนเป็น 'เคารพ'
Charlie

136

ลักษณะ

การตั้งค่าX-Content-Type-Optionsส่วนหัวการตอบสนอง HTTP ของเซิร์ฟเวอร์เพื่อnosniffสั่งให้เบราว์เซอร์ปิดการใช้งานเนื้อหาหรือการดมกลิ่น MIMEซึ่งใช้ในการแทนที่Content-Typeส่วนหัวการตอบสนองเพื่อคาดเดาและประมวลผลข้อมูลโดยใช้ประเภทเนื้อหาโดยนัย แม้ว่าสิ่งนี้จะสะดวกในบางสถานการณ์ แต่ก็สามารถนำไปสู่การโจมตีบางรายการตามด้านล่าง การกำหนดค่าเซิร์ฟเวอร์ของคุณเพื่อส่งคืนX-Content-Type-Optionsส่วนหัวการตอบสนอง HTTP ที่nosniffจะแนะนำเบราว์เซอร์ที่สนับสนุนการดมกลิ่น MIME ให้ใช้เซิร์ฟเวอร์ที่ให้มาContent-Typeและไม่ตีความเนื้อหาว่าเป็นเนื้อหาประเภทอื่น

สนับสนุนเบราว์เซอร์

X-Content-Type-Optionsส่วนหัวของการตอบสนอง HTTP ได้รับการสนับสนุนใน Chrome, Firefox และขอบเช่นเดียวกับเบราว์เซอร์อื่น ๆ การสนับสนุนเบราว์เซอร์ล่าสุดมีอยู่ในตารางความเข้ากันได้ของเบราว์เซอร์ Mozilla Developer Network (MDN) สำหรับตัวเลือก X-Content-Type-Type:

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

การโจมตีตอบโต้

  1. MIME สับสนโจมตีช่วยให้การโจมตีผ่านทางเว็บไซต์ที่ผู้ใช้สร้างเนื้อหาโดยให้ผู้ใช้อัปโหลดโค้ดที่เป็นอันตรายที่มีการดำเนินการแล้วโดยเบราว์เซอร์ซึ่งจะตีความไฟล์โดยใช้ชนิดเนื้อหาอื่นเช่นนัยเทียบกับอย่างชัดเจนapplication/javascript text/plainซึ่งอาจส่งผลให้เกิดการโจมตีแบบ "ขับรถด้วยการดาวน์โหลด"ซึ่งเป็นเวคเตอร์การโจมตีทั่วไปสำหรับฟิชชิง ไซต์ที่ผู้ใช้โฮสต์สร้างเนื้อหาควรใช้ส่วนหัวนี้เพื่อปกป้องผู้ใช้ สิ่งนี้ถูกกล่าวถึงโดย VeraCodeและ OWASPซึ่งกล่าวถึงสิ่งต่อไปนี้:

    วิธีนี้จะช่วยลดความเสี่ยงต่อการถูกโจมตีจากการดาวน์โหลดและเว็บไซต์ที่ให้บริการเนื้อหาที่ผู้ใช้อัพโหลดซึ่งโดยการตั้งชื่ออย่างฉลาดนั้น MSIE สามารถปฏิบัติได้เสมือนเป็นไฟล์ปฏิบัติการหรือไฟล์ HTML แบบไดนามิก

  2. Hotlinking ที่ไม่ได้รับอนุญาตสามารถเปิดใช้งานได้โดยการContent-Typeดม ด้วยการเชื่อมโยงไปยังไซต์ที่มีทรัพยากรเพื่อจุดประสงค์หนึ่งเช่นการดูแอปสามารถพึ่งพาการดมกลิ่นประเภทเนื้อหาและสร้างปริมาณการเข้าชมบนไซต์เพื่อวัตถุประสงค์อื่นซึ่งอาจขัดต่อข้อกำหนดในการให้บริการเช่น GitHubแสดงรหัส JavaScript สำหรับการดู แต่ไม่ใช่สำหรับการดำเนินการ:

    ผู้ใช้บางคนที่น่ารำคาญที่ไม่ใช่มนุษย์ (คือคอมพิวเตอร์) ได้นำไป "hotlinking" สินทรัพย์ผ่านคุณสมบัติมุมมองดิบ - ใช้ URL ดิบเป็นsrcหา<script>หรือ<img>แท็ก ปัญหาคือสิ่งเหล่านี้ไม่ใช่สินทรัพย์คงที่ มุมมองไฟล์ดิบเช่นเดียวกับมุมมองอื่น ๆ ในแอพ Rails จะต้องแสดงผลก่อนที่จะถูกส่งกลับไปยังผู้ใช้ สิ่งนี้ช่วยเพิ่มประสิทธิภาพการทำงานได้อย่างรวดเร็ว ก่อนหน้านี้เราถูกบังคับให้บล็อกเนื้อหายอดนิยมที่ให้บริการในลักษณะนี้เพราะจะทำให้เซิร์ฟเวอร์ของเราเครียดมากเกินไป


ใครคิดว่าการตัดสินใจเพิกเฉยต่อประเภทเนื้อหาที่ชัดแจ้งและใช้งานคาดเดาจะเป็นความคิดที่ดี omg ...
Sam Sirry

105
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

ส่วนหัวนี้ป้องกันการโจมตีตาม "mime" ส่วนหัวนี้ป้องกันไม่ให้ Internet Explorer จากการสูดดมการตอบสนอง MIME จากประเภทเนื้อหาที่ประกาศเป็นส่วนหัวบอกให้เบราว์เซอร์ไม่ให้แทนที่ประเภทเนื้อหาการตอบสนอง ด้วยตัวเลือก nosniff หากเซิร์ฟเวอร์แจ้งว่าเนื้อหาเป็นข้อความ / html เบราว์เซอร์จะแสดงเป็นข้อความ / html

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


1
นี่ไม่ควรเป็นอย่างนั้นเหรอ! ฉันคิดว่ามันแปลกที่เบราว์เซอร์จะพยายาม "ฉลาด" และละเว้นส่วนหัวของประเภทเนื้อหาที่ชัดเจน
Sam Sirry

25

สำหรับเซิร์ฟเวอร์ Microsoft IIS คุณสามารถเปิดใช้งานส่วนหัวนี้ผ่านweb.configไฟล์ของคุณ:

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

และคุณทำเสร็จแล้ว


3
นอกจากนี้ยังเป็นไปได้ที่จะตั้งค่าส่วนหัวที่กำหนดเองใน IIS แต่โซลูชันของคุณดีกว่าเพราะสามารถควบคุมแหล่งที่มาได้แทนที่จะจัดการการกำหนดค่า
ajeh

9

ส่วนหัว HTTP ตอบสนอง X-Content-Type-Options เป็นเครื่องหมายที่ใช้โดยเซิร์ฟเวอร์เพื่อระบุว่าประเภท MIME ที่โฆษณาในส่วนหัวของประเภทเนื้อหาไม่ควรมีการเปลี่ยนแปลงและปฏิบัติตาม วิธีนี้ทำให้สามารถเลือกไม่ใช้การดมกลิ่นประเภท MIME หรือกล่าวอีกนัยหนึ่งก็คือวิธีที่จะบอกว่าเว็บมาสเตอร์รู้ว่าพวกเขากำลังทำอะไรอยู่

ไวยากรณ์:

X-Content-Type-Options: nosniff

คำสั่ง:

nosniff บล็อกคำขอหากประเภทที่ร้องขอคือ 1. "style" และประเภท MIME ไม่ใช่ "text / css" หรือ 2 "script" และ MIME ไม่ใช่ประเภท JavaScript MIME

หมายเหตุ: nosniff ใช้กับประเภท "สคริปต์" และ "สไตล์" เท่านั้น นอกจากนี้การใช้ nosniff กับภาพกลายเป็นว่าไม่เข้ากันกับเว็บไซต์ที่มีอยู่

สเปค:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.