X-Content-Type-Options ทำอะไร?

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

หมายเหตุ: ส่วนหัว HTTP ไม่ได้มีเฉพาะใน HTTP และยังใช้ใน HTTPS ด้วย

MIME การดมกลิ่นคืออะไร?

เมื่อมีการส่งข้อมูลใดๆ ทางเว็บ หนึ่งในข้อมูลเมตาที่รวมอยู่นั้นเป็นประเภท MIME Multipurpose Internet Mail Extensions หรือ MIME types เป็นมาตรฐานที่ใช้ในการกำหนดประเภทของข้อมูลที่ไฟล์มีอยู่ ซึ่งบ่งชี้ว่าไฟล์ควรได้รับการจัดการอย่างไร โดยทั่วไป ประเภท MIME จะประกอบด้วยประเภทและประเภทย่อยพร้อมพารามิเตอร์และค่าที่เป็นทางเลือก ตัวอย่างเช่น ไฟล์ข้อความ UTF-8 จะมีประเภท MIME “text/plain; ชุดอักขระ = UTF-8” ในตัวอย่างนี้ ประเภทคือ "ข้อความ" ประเภทย่อยคือ "ธรรมดา" พารามิเตอร์คือ "ชุดอักขระ" และค่าคือ "UTF-8"

เพื่อป้องกันการติดฉลากผิดและการจัดการไฟล์อย่างไม่ถูกต้อง เว็บเซิร์ฟเวอร์มักจะทำการดมกลิ่น MIME นี่เป็นกระบวนการที่ละเว้นประเภท MIME ที่ระบุไว้อย่างชัดเจน และจะเริ่มวิเคราะห์จุดเริ่มต้นของไฟล์แทน ประเภทไฟล์ส่วนใหญ่มีลำดับส่วนหัวที่ระบุว่าเป็นไฟล์ประเภทใด โดยส่วนใหญ่แล้ว ประเภท MIME นั้นถูกต้อง และการดมไฟล์ไม่ได้ทำให้เกิดความแตกต่าง หากมีข้อแตกต่าง เว็บเซิร์ฟเวอร์จะใช้ประเภทไฟล์ที่ดมกลิ่นเพื่อกำหนดวิธีจัดการไฟล์แทนประเภท MIME ที่ประกาศไว้

ปัญหาจะเกิดขึ้นหากผู้โจมตีจัดการอัปโหลดไฟล์ เช่น รูปภาพ PNG แต่ไฟล์นั้นเป็นอย่างอื่นเช่นโค้ด JavaScript สำหรับประเภทไฟล์ที่คล้ายกัน เช่น ข้อความสองประเภท อาจไม่ทำให้เกิดปัญหามากเกินไป มันจะกลายเป็นปัญหาร้ายแรง แต่ถ้าไฟล์ที่ไม่มีอันตรายอย่างสมบูรณ์ก็สามารถดำเนินการแทนได้

X-Content-Type-Options ทำอะไร?

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

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