2013-08-20 83 views
176

Tôi đang làm một số thử nghiệm thâm nhập vào localhost của tôi với OWASP ZAP, và nó tiếp tục báo cáo tin nhắn này:"X-Content-Type-Options = nosniff" là gì?

Các Anti-MIME-Sniffing tiêu đề X-Content-Type-Tùy chọn đã không được đặt để 'nosniff'

Séc này dành riêng cho Internet Explorer 8 và Google Chrome. Đảm bảo mỗi trang đặt ra một tiêu đề Content-Type và X-content-type-OPTIONS nếu Content-Type tiêu đề không rõ

Tôi không có ý tưởng gì này có nghĩa, 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 thiết lập thông số chính xác là gì?

Trả lời

118

Điều này ngăn cản trình duyệt thực hiện đánh hơi loại MIME. Hầu hết các trình duyệt hiện nay đ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://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx?Redirected=true

Sending mới X-trang nội dung Tiêu đề phản hồi Loại-Tùy chọn có giá trị nosniff sẽ ngăn Internet Explorer khỏi bị MIME-sniffing phản hồi cách xa loại nội dung được khai báo.

EDIT:

Oh, và đó là một HTTP header, không phải là một thẻ meta tùy chọn HTML.

Xem thêm: http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx

+13

Bạn phải kể đến đó là 'cho các máy chủ lưu trữ content' không tin cậy. Đối với các trang web không hiển thị nội dung từ video tải lên của người dùng, bạn không cần phải đặt nội dung này. – machineaddict

+7

@machineaddict, ** Sai **. Việc đánh hơi sẽ xảy ra bất kể nội dung được tin cậy hay không tin cậy. Xem http://security.stackexchange.com/a/11761/2379. Nó sẽ phá vỡ trang web của bạn theo những cách tinh tế. Luôn tắt ngửi nếu bạn không thích bất ngờ. – Pacerier

+10

Tôi nghĩ rằng bạn đã bỏ lỡ phần "MIME-type sniffing là gì?" –

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

tiêu đề này ngăn cản "kịch câm" các cuộc tấn công dựa. Tiêu đề này ngăn không cho Internet Explorer từ MIME-sniffing một phản hồi ra khỏi kiểu nội dung được khai báo khi tiêu đề hướng dẫn trình duyệt không ghi đè lên kiểu 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à text/html, trình duyệt sẽ hiển thị nội dung dưới dạng text/html.

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

+4

giải thích rõ ràng hơn nhiều so với những người khác - cảm ơn – danday74

+0

@GuillaumeBoudreau Nó làm việc cho tôi –

+4

Tôi luôn biết rằng những tội ác là nguy hiểm. Họ chỉ nên học từ. – kguest

14

Đối với Microsoft IIS server, bạn có thể bật tiêu đề này thông qua tập tin web.config của bạn:

<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 đã làm xong.

+2

Cũng có thể đặt 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ì cấu hình được quản lý. – ajeh

58

Trình duyệt có thể sử dụng content or MIME sniffing để ghi đè phản hồi Content-Type tiêu đề để đoán và xử lý dữ liệu bằng cách sử dụng loại nội dung ngầm. Trong khi điều này có thể thuận tiện trong một số trường hợp, 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ề tiêu đề phản hồi HTTP X-Content-Type-Options được đặt thành nosniff sẽ hướng dẫn các trình duyệt hỗ trợ MIME đánh hơi để sử dụng máy chủ được cung cấp Content-Type và 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

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

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

tấn công phản đối

  1. MIME Confusion Attack phép tấn công thông qua 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 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ụ: application/javascript so với text/plain. Điều này có thể dẫn đến "drive-by download" attack là một loại 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 sẽ sử dụng tiêu đề này để bảo vệ người dùng của họ. Này được đề cập bởi VeraCodeOWASP mà nói như sau:

    Điều này làm giảm tiếp xúc với drive-by tấn công tải về và các trang web phục vụ người dùng tải lên nội dung đó, bằng cách đặt tên thông minh, có thể được xử lý bằng MSIE như file HTML thực thi hoặc động .

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

    Một số người dùng không phải con người pesky (cụ thể là máy tính) đã thực hiện để "hotlinking" tài sản thông qua tính năng xem liệu - sử dụng URL liệu như src cho một thẻ <script> hoặc <img>. 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 thêm vào một số lượng lớn về hiệu suất. Trong quá khứ, chúng tôi đã buộc phải chặn nội dung phổ biến được phân phối theo cách này bởi vì nó gây căng thẳng quá mức trên máy chủ của chúng tôi.

+4

Nỗ lực để giải thích những gì các cuộc tấn công thực sự được đánh giá cao. – Andrejs

+1

Cảm ơn bạn đã giải thích. Chỉ cần nói "nó ngăn xyz" không giúp ích gì nhiều nếu ứng dụng của tôi có thể phải chịu điều này. Nhờ lời giải thích của bạn, tôi biết nó không thể bị loại tấn công như vậy. –

2

Phần header X-Content-Type-Tùy chọn HTTP response là một dấu hiệu được sử dụng bởi các máy chủ để cho biết rằng các loại MIME được quảng cáo trong các tiêu đề Content-Type không nên thay đổi và được theo sau. Điều này cho phép chọn không tham gia loại MIME, hoặc nói cách khác, đó là cách để nói rằng quản trị viên web biết họ đang làm gì.

Cú pháp:

X-Content-Type-Options: nosniff

Chỉ thị:

nosniff Blocks yêu cầu nếu loại yêu cầu là 1."kiểu" và loại MIME không phải là "văn bản/css" hoặc 2. "tập lệnh" 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 "tập lệnh" và "kiểu". Cũng áp dụng nosniff cho hình ảnh hóa ra là không tương thích với các trang web hiện có.

Thông số kỹ thuật:

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