Tiêu đề bảo mật là một tập hợp con của tiêu đề phản hồi HTTP có thể được đặt bởi máy chủ web mà mỗi máy chủ áp dụng một kiểm soát bảo mật trong trình duyệt. Tiêu đề HTTP là một dạng siêu dữ liệu được gửi cùng với các yêu cầu và phản hồi trên web. Tiêu đề bảo mật “X-Content-Type-Options” ngăn các trình duyệt thực hiện tính năng dò tìm MIME.
Lưu ý: Tiêu đề HTTP không dành riêng cho HTTP và cũng được sử dụng trong HTTPS.
Đánh hơi MIME là gì?
Khi bất kỳ dữ liệu nào được gửi qua web, một trong những phần siêu dữ liệu được bao gồm là loại MIME. Tiện ích mở rộng thư Internet đa năng, hoặc kiểu MIME là một tiêu chuẩn được sử dụng để xác định loại dữ liệu mà tệp chứa, cho biết cách xử lý tệp. Thông thường, kiểu MIME bao gồm một kiểu và kiểu con với một tham số và giá trị tùy chọn. Ví dụ: tệp văn bản UTF-8 sẽ có kiểu MIME “text / trơn; charset = UTF-8”. Trong ví dụ đó, loại là “văn bản”, loại phụ là “thuần túy”, tham số là “bộ ký tự” và giá trị là “UTF-8”.
Để ngăn chặn việc gắn nhãn sai và xử lý sai tệp, các máy chủ web thường thực hiện tính năng dò tìm MIME. Đây là một quá trình mà kiểu MIME đã nêu rõ ràng bị bỏ qua và thay vào đó, phần bắt đầu của tệp được phân tích. Hầu hết các loại tệp bao gồm chuỗi tiêu đề cho biết loại tệp đó là. Hầu hết thời gian, các kiểu MIME đều đúng và việc xem xét tệp không có gì khác biệt. Tuy nhiên, nếu có sự khác biệt, máy chủ web sẽ sử dụng kiểu tệp được đánh hơi để xác định cách xử lý tệp thay vì kiểu MIME đã khai báo.
Sự cố xảy ra nếu kẻ tấn công quản lý để tải lên một tệp, chẳng hạn như hình ảnh PNG, nhưng tệp thực sự là một cái gì đó khác giống như mã JavaScript. Đối với các loại tệp tương tự, chẳng hạn như hai loại văn bản, điều này có thể không gây ra quá nhiều vấn đề. Tuy nhiên, nó trở thành một vấn đề nghiêm trọng, nếu một tệp hoàn toàn vô hại sau đó có thể được thực thi.
X-Content-Type-Options làm gì?
Tiêu đề X-Content-Type-Options chỉ có một giá trị khả dĩ “X-Content-Type-Options: nosniff”. Việc kích hoạt nó thông báo cho trình duyệt của người dùng rằng nó không được thực hiện đánh giá kiểu MIME và thay vào đó dựa vào giá trị được khai báo rõ ràng. Nếu không có cài đặt này, nếu tệp JavaScript độc hại được ngụy trang dưới dạng hình ảnh chẳng hạn như PNG, thì tệp JavaScript sẽ được thực thi. Khi bật X-Content-Type-Options, tệp sẽ được coi là hình ảnh không tải được vì tệp không phải là định dạng hình ảnh hợp lệ.
X-Content-Type-Options không đặc biệt cần thiết trên một trang web sử dụng hoàn toàn tài nguyên của bên thứ nhất, vì không có khả năng một tệp độc hại vô tình được phân phát. Nếu một trang web sử dụng nội dung của bên thứ ba, chẳng hạn như tài nguyên bên ngoài hoặc do người dùng gửi, thì X-Content-Type-Options cung cấp khả năng bảo vệ chống lại kiểu tấn công này.