Kiểu X-Content-Type-Options = nosniff 'là gì?


291

Tôi đang thực hiện một số thử nghiệm thâm nhập trên localhost của mình với OWASP ZAP và nó tiếp tục báo cáo thông báo này:

Tùy chọn X-Content-Type-Type-Tùy chọn chống MIME-Sniffing không được đặt thành 'nosniff'

Kiểm tra này dành riêng cho Internet Explorer 8 và Google Chrome. Đảm bảo mỗi trang đặt tiêu đề Kiểu nội dung và X-NỘI DUNG-LOẠI-TÙY CHỌN nếu tiêu đề Kiểu nội dung không xác định

Tôi không biết điều này có nghĩa là gì và tôi không thể tìm thấy bất cứ điều gì trực tuyến. Tôi đã thử thêm:

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

nhưng tôi vẫn nhận được cảnh báo.

Cách chính xác để thiết lập tham số là gì?

Câu trả lời:


178

Nó ngăn trình duyệt thực hiện việc đánh hơi kiểu MIME. Hầu hết các trình duyệt hiện đang tôn trọng tiêu đề này, bao gồm Chrome / Chromium, Edge, IE> = 8.0, Firefox> = 50 và Opera> = 13. Xem:

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

Gửi tiêu đề phản hồi Tùy chọn loại nội dung X mới với giá trị nosniff sẽ ngăn Internet Explorer khỏi MIME - đánh hơi một phản hồi khỏi loại nội dung được khai báo.

BIÊN TẬP:

Ồ, và đó là một tiêu đề HTTP, không phải là một tùy chọn thẻ meta HTML.

Xem thêm: http://msdn.microsoft.com/en-us/l Library / i / gg622941 (v = vs85) .aspx


22
Bạn phải đề cập đến điều đó for servers hosting untrusted content. Đối với các trang web không hiển thị nội dung từ tải lên của người dùng, bạn không cần phải đặt nội dung này.
máy móc

12
@machineaddict, Sai . Đánh hơi sẽ xảy ra bất kể nội dung là đáng tin cậy hay không đáng tin cậy. Xem bảo mật.stackexchange.com/a/11761/ 2379 . Nó sẽ phá vỡ trang web của bạn theo những cách tinh tế. Luôn vô hiệu hóa việc đánh hơi nếu bạn không thích sự bất ngờ.
Pacerier

33
Tôi nghĩ rằng bạn đã bỏ lỡ phần "Đánh hơi kiểu MIME là gì?"
VarunAgw

3
firefoxcũng hỗ trợ tiêu đề này ngay bây giờ: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/
mẹo

'Thực thi' tiêu đề có thể bị hiểu sai là 'yêu cầu', tôi đã thay đổi nó thành 'tôn trọng'.
Charlie

135

Sự miêu tả

Đặt X-Content-Type-Optionstiêu đề phản hồi HTTP của máy chủ để nosniffhướng dẫn trình duyệt tắt nội dung hoặc đánh hơi MIME được sử dụng để ghi đè Content-Typetiêu đề phản hồi để đoán và xử lý dữ liệu bằng cách sử dụng loại nội dung ẩn. Mặc dù điều này có thể thuận tiện trong một số tình huống, nó cũng có thể dẫn đến một số cuộc tấn công được liệt kê dưới đây. Định cấu hình máy chủ của bạn để trả về X-Content-Type-Optionstiêu đề phản hồi HTTP được đặt thành nosniffsẽ hướng dẫn các trình duyệt hỗ trợ MIME đánh hơi để sử dụng máy chủ do máy chủ cung cấp Content-Typevà không diễn giải nội dung dưới dạng loại nội dung khác.

Hỗ trợ trình duyệt

Các X-Content-Type-Optionsphản ứng tiêu đề HTTP được hỗ trợ trong Chrome, Firefox và Edge cũng như các trình duyệt khác. Hỗ trợ trình duyệt mới nhất có sẵn trên Bảng tương thích trình duyệt Mozilla Developer Network (MDN) cho X-Content-Type-Options:

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

Tấn công chống lại

  1. MIME Confusion Attack cho phép các cuộc tấn công thông qua các trang web nội dung do người dùng tạo bằng cách cho phép người dùng tải lên mã độc hại sau đó được thực thi bởi các trình duyệt sẽ giải thích các tệp bằng cách sử dụng các loại nội dung thay thế, ví dụ như ẩnapplication/javascriptso với rõ ràngtext/plain. Điều này có thể dẫn đến một cuộc tấn công "tải xuống theo ổ đĩa" , là một vectơ tấn công phổ biến cho lừa đảo. Các trang web lưu trữ nội dung do người dùng tạo nên sử dụng tiêu đề này để bảo vệ người dùng của họ. Điều này được đề cập bởi VeraCode OWASP có nội dung như sau:

    Điều này làm giảm sự tiếp xúc với các cuộc tấn công tải xuống theo ổ đĩa và các trang web phục vụ nội dung được tải lên của người dùng, bằng cách đặt tên thông minh, có thể được MSIE coi là các tệp HTML động hoặc thực thi.

  2. Hotlinking trái phép cũng có thể được kích hoạt bằng cáchContent-Typeđánh hơi. Bằng cách liên kết đến các trang web có tài nguyên cho một mục đích, ví dụ: xem, các ứng dụng có thể dựa vào việc đánh hơi kiểu nội dung và tạo ra nhiều lưu lượng truy cập trên các trang web cho mục đích khác trong đó có thể trái với điều khoản dịch vụ của chúng, ví dụ GitHub hiển thị mã JavaScript để xem, nhưng không được thực hiện:

    Một số người dùng không phải là con người (cụ thể là máy tính) đã sử dụng tài sản "liên kết nóng" thông qua tính năng xem thô - sử dụng URL thô làm thẻ srccho <script>hoặc <img>thẻ. Vấn đề là đây không phải là tài sản tĩnh. Chế độ xem tệp thô, giống như bất kỳ chế độ xem nào khác trong ứng dụng Rails, phải được hiển thị trước khi được trả lại cho người dùng. Điều này nhanh chóng làm tăng thêm một lượng lớn hiệu suất. Trước đây, chúng tôi đã buộc phải chặn nội dung phổ biến được phục vụ theo cách này vì nó gây căng thẳng quá mức cho các máy chủ của chúng tôi.


Ai nghĩ rằng quyết định bỏ qua một loại nội dung rõ ràng và sử dụng công việc đoán sẽ là một ý tưởng tốt?

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

Tiêu đề này ngăn chặn các cuộc tấn công dựa trên "mime". Tiêu đề này ngăn Internet Explorer khỏi MIME - đánh hơi một phản hồi khỏi loại nội dung được khai báo vì tiêu đề hướng dẫn trình duyệt không ghi đè loại nội dung phản hồi. Với tùy chọn nosniff, nếu máy chủ cho biết nội dung là văn bản / html, trình duyệt sẽ hiển thị dưới dạng văn bản / html.

http://stopmal Quảng cáo.com/security/securing-your-website-with-.htaccess/.htaccess-http-headers.html


1
Không phải luôn luôn như vậy sao?! Tôi thấy thật kỳ lạ khi một trình duyệt sẽ cố gắng hành động "thông minh" và bỏ qua tiêu đề loại nội dung rõ ràng.
Sam Sirry

25

Đối với máy chủ Microsoft IIS, bạn có thể bật tiêu đề này qua web.configtệp của mình :

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

Và bạn đã hoàn thành.


3
Cũng có thể đặt các tiêu đề tùy chỉnh trong IIS, nhưng giải pháp của bạn tốt hơn vì nó có thể được kiểm soát nguồn thay vì quản lý cấu hình.
ajeh

9

Tiêu đề HTTP phản hồi Tùy chọn loại nội dung X là một điểm đánh dấu được máy chủ sử dụng để chỉ ra rằng các loại MIME được quảng cáo trong các tiêu đề Loại nội dung không nên được thay đổi và phải tuân theo. Điều này cho phép từ chối loại đánh hơi MIME, hay nói cách khác, đó là một cách để nói rằng các quản trị web biết họ đang làm gì.

Cú pháp:

Tùy chọn loại nội dung X: nosniff

Chỉ thị:

nosniff Chặn yêu cầu nếu loại được yêu cầu là 1. "style" và loại MIME không phải là "text / css" hoặc 2. "script" và loại MIME không phải là loại MIME JavaScript.

Lưu ý: nosniff chỉ áp dụng cho các loại "script" và "style". Đồng thời áp dụng nosniff cho hình ảnh hóa ra không tương thích với các trang web hiện có.

Sự chỉ rõ :

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.