Güvenlik üstbilgileri, her biri tarayıcılarda bir güvenlik denetimi uygulayan bir web sunucusu tarafından ayarlanabilen HTTP yanıt üstbilgisinin bir alt kümesidir. HTTP üstbilgileri, web istekleri ve yanıtlarıyla birlikte gönderilen bir meta veri biçimidir. "X-Content-Type-Options" güvenlik başlığı, tarayıcıların MIME koklaması yapmasını engeller.
Not: HTTP başlıkları HTTP'ye özel değildir ve HTTPS'de de kullanılır.
MIME koklama nedir?
Web üzerinden herhangi bir veri gönderildiğinde, dahil edilen meta veri parçalarından biri bir MIME türüdür. Çok Amaçlı İnternet Posta Uzantıları veya MIME türleri, bir dosyanın içerdiği veri türünü tanımlamak için kullanılan ve dosyanın nasıl işlenmesi gerektiğini belirten bir standarttır. Tipik olarak, MIME türü, isteğe bağlı bir parametre ve değere sahip bir tür ve alt türden oluşur. Örneğin, bir UTF-8 metin dosyası MIME türünde “metin/düz; karakter kümesi=UTF-8”. Bu örnekte, tür "metin", alt tür "düz", parametre "karakter kümesi" ve değer "UTF-8".
Dosyaların yanlış etiketlenmesini ve yanlış işlenmesini önlemek için web sunucuları genellikle MIME koklama gerçekleştirir. Bu, açıkça belirtilen MIME türünün yok sayıldığı ve bunun yerine dosyanın başlangıcının analiz edildiği bir işlemdir. Çoğu dosya türü, ne tür bir dosya olduğunu gösteren başlık dizileri içerir. Çoğu zaman, MIME türleri doğrudur ve dosyayı koklamak hiçbir fark yaratmaz. Yine de bir fark varsa, web sunucuları, bildirilen MIME türü yerine dosyanın nasıl işleneceğini belirlemek için koklanan dosya türünü kullanır.
Sorun, bir saldırgan PNG görüntüsü gibi bir dosyayı karşıya yüklemeyi başarır, ancak dosya gerçekten JavaScript koduna benzer bir şeyse ortaya çıkar. İki metin türü gibi benzer dosya türleri için bu çok fazla soruna neden olmayabilir. Bununla birlikte, bunun yerine tamamen zararsız bir dosya yürütülebilirse, bu ciddi bir sorun haline gelir.
X-Content-Type-Options ne işe yarar?
X-Content-Type-Options başlığının yalnızca bir olası "X-Content-Type-Options: nosniff" değeri vardır. Etkinleştirilmesi, kullanıcının tarayıcısına MIME türü koklama gerçekleştirmemesi ve bunun yerine açıkça bildirilen değere dayanması gerektiği konusunda bilgi verir. Bu ayar olmadan, kötü amaçlı bir JavaScript dosyası PNG gibi bir görüntü olarak gizlenmişse, JavaScript dosyası yürütülür. X-Content-Type-Options etkinleştirildiğinde, dosya geçerli bir resim formatı olmadığı için yüklenemeyen bir resim olarak ele alınacaktır.
X-Content-Type-Options, tamamen birinci taraf kaynakları kullanan bir web sitesinde, kötü amaçlı bir dosyanın yanlışlıkla sunulma olasılığı olmadığından özellikle gerekli değildir. Bir web sitesi harici veya kullanıcı tarafından gönderilen kaynaklar gibi üçüncü taraf içeriği kullanıyorsa, X-Content-Type-Options bu tür saldırılara karşı koruma sağlar.