Content-Type-Options là một response header cho phép trình duyệt chống lại các lỗ hổng kiểu nội dung hoặc các lỗ hổng MIME
MIME sniffing là một tính năng quan trọng mà hầu hết các trình duyệt web sử dụng để kiểm tra và điều chỉnh loại nội dung của tài nguyên đang được tải. Ví dụ, khi trình duyệt được yêu cầu hiển thị hình ảnh từ đường dẫn /hoa-cai.png, máy chủ có thể không đặt đúng Content-Type trong header của response (ví dụ: Content-Type: text/plain).
Trong trường hợp này, trình duyệt sẽ thực hiện quá trình “đánh hơi (sniff)” tệp để xác định định dạng của nó. Quan trọng là trình duyệt sẽ bỏ qua thông tin về loại nội dung mà máy chủ gửi và thay vào đó, tự xác định định dạng của tệp. Quá trình này đảm bảo rằng hình ảnh sẽ được hiển thị đúng cách.
Mặc dù MIME sniffing là một tính năng hữu ích của trình duyệt, nhưng nó cũng mang theo một lỗ hổng bảo mật tiềm ẩn. Ví dụ: Nếu ứng dụng web cho phép người dùng tải lên hình ảnh của họ, người tải lên có thể cố tình chèn mã HTML độc hại vào tệp hình ảnh. Trong trường hợp này, trình duyệt sẽ không quan tâm đến thông tin về loại nội dung hình ảnh và thay vào đó, thực hiện mã HTML độc hại đó.
Để giải quyết vấn đề này, X-Content-Type-Options được sử dụng để hướng dẫn trình duyệt tránh MIME sniffing khi xử lý các tài nguyên đã được tải. Kỹ thuật này giúp giữ nguyên giá trị đã được đặt trong tiêu đề Content-Type và đảm bảo tính an toàn của ứng dụng web trước các tác động tiềm ẩn.
X-Content-Type-Options chỉ có một tùy chọn là: nosniff —> ngăn chặn các nỗ lực sniffing kiểu MIME.
Cấu hình sao cho webserver trả về header như này là được:
X-Content-Type-Options: nosniff
