Defaults.Exposed › Düzeltmeler › MIME algılama koruması (X-Content-Type-Options)
MIME algılama koruması (X-Content-Type-Options) nasıl düzeltilir
Tarayıcıların bir dosyanın gerçekte ne olduğunu tahmin etmesini durduran tek satırlık bir başlıktır. Bu olmadan, sitenize birinin yüklediği — ya da kendi sayfalarınızdaki — bir dosya tarayıcı tarafından yanlış okunarak kod olarak çalıştırılabilir; bu da bazı saldırıların zararsız görünen bir yüklemeyi müşterilerinizin oturumlarını çalmak için kullanmasının tam da bu şekilde gerçekleştiği anlamına gelir.
İşletmeniz için sonuç: Bu başlığın eksikliği, temellerin yerinde olmadığının net ve taranabilir bir işaretidir. Tek başına nadiren bir siteyi çökertir, ama dosya yükleme formu veya kullanıcı tarafından oluşturulan içerikle birleşince, bir saldırganın ziyaretçilerin tarayıcılarında kötü niyetli kod çalıştırmasına, oturum açılmış oturumları ele geçirmesine, kart girişini veya giriş bilgilerini çalmasına ve sizi bir veri ihlali konuşmasının yanlış tarafına koymasına zemin hazırlar. Güvenlikte en ucuz düzeltmelerden biridir: tek satır, ücretsiz, yaklaşık beş dakika.
Bu size ne mal olabilir
- Müşterilerin veya personelin dosya yükleyebildiği herhangi bir sayfa (avatarlar, belgeler, destek ekleri, listeleme fotoğrafları) tarayıcı tarafı saldırılar için olası bir platform haline gelir.
- Saldırgan kötü niyetli kodu resim veya metin dosyası gibi gösterebilir ve ziyaretçinin tarayıcısının bunu çalıştırmasını sağlayabilir — sitenizde oturum açılmış oturumları çalarak.
- Güvenlik anketleri, siber sigorta kontrolleri ve kurumsal alıcılar bu başlığı tarar; eksikliği 'temelleri yapmıyorlar' olarak okunur ve bir anlaşmayı duraksatabilir veya batırabilir.
- Eski tarayıcılar ve bazı entegrasyonlar içerik türlerini 'koklayarak' dosyaları güveni kıran veya veri sızdıran şekillerde yanlış işleyebilir.
Neden önemlidir. Tarayıcılar, bir sunucu dosyanın ne olduğu konusunda belirsiz davrandığında içerik türünü tahmin etmeye ('koklamaya') çalışır. Saldırganlar bu tahmini suistimal eder: sunucunun masum resim olarak etiketlediği ama tarayıcının aslında JavaScript olarak değerlendirdiği ve çalıştırdığı bir dosya yüklerler. X-Content-Type-Options: nosniff başlığı, her tarayıcıya tahminden vazgeçmesini ve sunucunun belirttiği türe güvenmesini söyleyerek bu hile kategorisinin tamamını kapatır. 25 puan değerinde puanlanan bir kontroldür ve eksik olduğunda orta önem derecesiyle değerlendirilir.
Sade dille nedir
Her web tarayıcısında sessiz bir varsayım bulunur: sitenizden bir dosya indirdiğinde ne tür bir dosya olduğunu anlamaya çalışır. Genellikle sunucunuza güvenir. Ama sunucunuz belirsiz davranırsa tarayıcı tahmin eder — ve bu tahminin adı MIME algılamadır.
Sorun şu: saldırganlar bu tahmini manipüle edebilir. Sunucunuzun gerçekten zararsız resim olduğuna inandığı, ama tarayıcının kendi kendine tahmin ederek aslında bir program kodu parçası olduğuna karar verip çalıştırdığı bir dosya oluşturabilirler — müşterinizin tarayıcısında, alan adınız üzerinde.
Tahmin etmeyi kapatan tek satırlık bir talimat vardır: X-Content-Type-Options: nosniff. Her tarayıcıya şunu söyler: “tahmin etme — sunucumun size söylediklerine tam olarak güven.” Düzeltmenin tamamı budur. Ücretsizdir, yaklaşık beş dakika alır ve doğru yapılandırılmış bir sitede hiçbir şeyi bozmaz.
Bu kontrol o başlığı arar. Eksikse 25 puan kaybedersiniz ve orta önem dereceli sorun olarak değerlendirilir — başlığın tek başına bir felaket olduğu için değil, ama yokluğu temellerin kilitlenmemiş olduğunun güvenilir bir işaretidir.
Size maliyeti ne olabilir
Bunlar gerçekçi, işletme düzeyinde senaryolardır — en kötü durum tiyatrosu değil.
-
“Zararsız ek” çıkmadı. Müşterilerin dosya yüklediği bir destek portalı veya pazar yeri işletiyorsunuz — makbuzlar, fotoğraflar, belgeler. Saldırgan sisteminizin resim olarak depoladığı ve sunduğu bir dosya yükler. nosniff olmadan kurbanın tarayıcısı dosyanın aslında komut dosyası olduğunu tahmin eder ve çalıştırır — sitenizde o ziyaretçinin oturum açılmış oturumunu sessizce çalar. Artık saldırgan onlardır: sipariş veriyorlar, mesajları okuyorlar, ayrıntıları değiştiriyorlar. Müşteriler yapmadıkları etkinlikler hakkında şikâyet etmeye başladığında öğreniyorsunuz.
-
Bir güvenlik anketinde duran anlaşma. Daha büyük bir müşterinin tedarik ekibi imzalamadan önce sitenizin otomatik taramasını çalıştırıyor. Eksik güvenlik başlıkları anında ortaya çıkıyor. Hiçbir şey hiç istismar edilmemiş olsa bile rapor “temel web güvenlik başlıkları eksik” diyor ve şimdi beş dakikalık bir düzeltme yüzünden giderek soruları yanıtlıyor ve kapanış tarihinizi haftalar uzatıyorsunuz.
-
Zorlaşan siber sigorta yenilemesi. Daha fazla sigortacı artık teklife veya yenilemeye başlamadan önce harici tarama yapıyor. Temiz bir başlık profili ucuz hijyen kanıtıdır; eksik bir tane ise biriktiğinde priminizi artıran veya koşullarınızı aşağı çeken küçük bir kara lekedir.
-
Kolayca geri alınamayan itibar kaybı. Bir oturum ele geçirme olayı alan adınızdan sunulan bir dosyaya kadar izlenirse, hikaye “belirsiz bir başlık eksikti” değil — “[işletmeniz] müşteri hesaplarını sızdırdı” olur. Bu, müşterilerin hatırladığı versiyondur ve düzeltmenin hiçbir zaman olacağından çok daha pahalıya mal olur.
Bunların hiçbiri sofistike bir saldırgan gerektirmez. MIME algılama istismarı iyi bilinir ve otomatiktir — bu tam olarak tarayıcıların eksik başlığı bu kadar kesin şekilde işaretlemesinin nedenidir.
Teknik olarak nedir
Bir tarayıcı dosya aldığında sunucunun onu bir içerik türüyle etiketlemesi gerekir (örneğin PNG resim için image/png veya web sayfası için text/html). Tarihsel olarak tarayıcılar bu etikete tam güvenmiyordu — kısmen bazı sunucuların hata yaptığı için — bu yüzden dosyanın gerçek baytlarına bakıp kendi kararlarını veriyorlardı. Bu bakış MIME algılamadır.
Kolaylık yükümlülüğe dönüştü. Saldırgan sitenize bir dosya sokabilirse (yükleme formu, yorumlar alanı, içe aktarılan belge aracılığıyla) ve içeriğini etkileyebilirse, sunucunun masum şekilde etiketlediği ama tarayıcının yürütülebilir komut dosyası olarak algıladığı bir şey oluşturabilir. Tarayıcı bunu alan adınızda, alan adınızın taşıdığı tüm güvenle çalıştırır.
X-Content-Type-Options: nosniff tahmin işini tamamen ortadan kaldırır. Bu ayarla tarayıcıya şu söylenir: sunucunun bildirdiği türü kullan, başka hiçbir şey değil. Resim olarak etiketlenmiş bir dosya resim olarak işlenir, nokta — içeriği komut dosyasına benzese bile. Saldırı vektörü kapanır.
“İyi” neye benzer: sitenizden gelen her yanıt — sayfalar ve varlıklar dahil — tam olarak şu başlığı taşır:
X-Content-Type-Options: nosniff
Başka geçerli değer yoktur ve yapılacak ayarlama yoktur. CDN’niz ve sunucunuz ikisi de ekliyorsa (nosniff, nosniff görürseniz), bu normaldir ve yine de geçer.
Nasıl düzeltilir (ücretsiz, ~5 dakika)
Bu bölümü web sitenizi çalıştıran kişiye iletin — BT uzmanı, web geliştiriciniz veya barındırma desteği. Düzeltme ücretsiz ve hızlıdır; satın alınacak hiçbir şey yok. İstedikleri şey basit: “Site üzerindeki her sayfaya ve varlığa X-Content-Type-Options: nosniff yanıt başlığını ekle.”
İşte yaygın platforma göre ayrıntı.
Cloudflare (veya benzer CDN/proxy) — genellikle tüm siteyi aynı anda kapsayan en hızlı yer:
- Tüm gelen istekler için
X-Content-Type-Options’ınosniffolarak ayarlayan bir Yanıt Başlığı Dönüştürme Kuralı (Kurallar → Dönüştürme Kuralları → Yanıt Başlığını Değiştir) kullanın. Bu, kaynak sunucuya dokunmadan site genelinde uygular.
Nginx — ilgili server (veya location) bloğunun içine ekleyin:
add_header X-Content-Type-Options "nosniff" always;
always anahtar kelimesi hata yanıtlarında da gönderilmesini sağlar. Kaydettikten sonra Nginx’i yeniden yükleyin.
Apache — mod_headers etkin olmalı; site yapılandırmasında veya .htaccess’te:
Header always set X-Content-Type-Options "nosniff"
IIS / Windows barındırma — web.config’de <system.webServer> altında:
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff" />
</customHeaders>
</httpProtocol>
Node / Express — her yanıt için ayarlayın:
app.use((req, res, next) => {
res.setHeader('X-Content-Type-Options', 'nosniff');
next();
});
(Veya varsayılan olarak bunu ve diğer güvenlik başlıklarını ayarlayan helmet paketini kullanın.)
Google Workspace / Microsoft 365 siteleri: bunlar e-postanızı ve belgelerinizi yönetir, genel web sitesi barındırmanızı değil — dolayısıyla başlık burada değil, web sitenizin kendisinin sunulduğu yerde (CDN’niz, web sunucunuz veya site oluşturucunuz) ayarlanır. Barındırılan bir site oluşturucu kullanıyorsanız (Squarespace, Wix, Shopify ve benzeri), birçoğu bu başlığı sizin için otomatik olarak ekler; varsaymak yerine sonucu kontrol edin ve eksikse desteğe sorun.
Dağıtımdan sonra doğrulayın. Taramanızı yeniden çalıştırın veya geliştiriciye tarayıcı geliştirici araçlarında yanıt başlıklarını kontrol ettirin (Ağ sekmesi → herhangi bir isteğe tıklayın → Yanıt Başlıkları) ve X-Content-Type-Options: nosniff’in mevcut olduğunu doğrulayın. Hiçbir şeyin bozulmadığını onaylamak için siteyi kısaca test edin — doğru yapılandırılmış bir sitede hiçbir şey bozulmaz.
Yaygın hatalar
- Yalnızca ana sayfaya ayarlamak. Başlık her yanıtta olmalı — resimler, komut dosyaları, stil sayfaları ve yüklenen dosyalar dahil — çünkü bunlar algılamanın etkilediği kaynaklardır. Evrensel olması için sunucu veya CDN düzeyinde uygulayın, sayfa sayfa değil.
- Değerde yazım hatası. Geçerli tek değer
nosniff’tir. Başka herhangi bir şey (boş değer, yazım hatası) kontrolü başarısız kılar ve hiçbir koruma sağlamaz. Tarayıcı gerçekte gördüğü değeri bildirecektir, böylece yazım hatasını fark edebilirsiniz. - İçerik Güvenliği Politikasının yerini tuttuğunu varsaymak. nosniff tek bir katmandır. Hangi komut dosyalarının çalışmasına izin verildiğini kontrol etmez — bu CSP’nin işidir. nosniff’i şimdi hızlı kazanç olarak ekleyin ve uygun CSP’yi daha büyük takip adımı olarak değerlendirin.
- “Kopyayı” kaldırmak. Hem CDN’niz hem de kaynağınız ayarlıyorsa iki kez göreceksiniz. Bu zararsız — birini çıkarmak için zaman harcamayın.
- Bunun için ödeme yapmak. Ücretsiz bir yapılandırma değişikliğidir. İzleme, denetimler ve portföy gösterge tabloları meşru biçimde ücretlidir; tek bir başlık eklemek değil.
SSS
Kimsenin dosya yüklemesine izin vermiyoruz. Yine de buna ihtiyacımız var mı?
Evet ve hâlâ yapmaya değer. Başlık derinlemesine savunmadır: ayrıca tarayıcının kendi sitenizden sunulan komut dosyalarını, stil sayfalarını ve veri dosyalarını yanlış okumasını da engeller — bu da yükleme formu olmayan sitelerde bile birkaç siteler arası komut dosyası çalıştırma hilesine karşı koruma sağlar. Hiçbir maliyeti yoktur ve doğru yapılandırılmış bir siteyi hiçbir zaman bozmaz, dolayısıyla atlamanın hiçbir nedeni yoktur.
Bunu eklemek web sitemizde herhangi bir şeyi bozar mı?
Neredeyse hiç. nosniff, tarayıcıların sunucunuzun zaten gönderdiği içerik türüne uymalarını sağlar. Sorun çıkarabildiği tek durum, sunucunuzun dosyaları yanlış etiketlemesidir — örneğin bir stil sayfası veya komut dosyası yanlış türle gönderiliyorsa. Bir şey bozulursa bu, nosniff'in neden olduğu değil ortaya çıkardığı gerçek bir hatadır ve düzeltmeye değer. Dağıtımdan sonra bir kez test edin.
'İyi' gerçekte neye benzer?
Her sayfada ve varlıkta tek bir yanıt başlığı: X-Content-Type-Options: nosniff. Bu tam ve doğru yapılandırmadır — başka geçerli değer yoktur ve yapılacak ayarlama da yoktur.
CDN'imiz (Cloudflare veya benzeri) ve sunucumuzun ikisi de ekliyor — bu bir sorun mu?
Hayır. Hem CDN hem de kaynak bunu ayarladığından değeri iki kez görmek ('nosniff, nosniff') tamamen normaldir ve yine de geçer. Birini kaldırmanıza gerek yoktur.
Bunu düzeltmenin bir maliyeti var mı?
Hayır. Düzeltme, web sunucunuzda veya CDN'nizde tek satır ücretsiz yapılandırmadır. Tek bir başlık eklemeniz için sizden ücret alan biri aşırı fiyatlandırıyor. Bu alanda ödemeye değer tek şeyler sürekli izleme, birçok sitede portföy görünümü veya resmi denetimdir — düzeltmenin kendisi değil.
Bu, İçerik Güvenliği Politikasından (CSP) nasıl farklı?
Tamamlayıcıdırlar. CSP hangi komut dosyaları ve kaynakların yüklenmesine izin verildiğini kontrol eder; nosniff tarayıcının yüklediği bir dosyayı yanlış sınıflandırmasını engeller. Her ikisini de istersiniz. nosniff çok daha basit ve daha hızlı eklenebilir, bu yüzden tam CSP'ye giden yolda iyi bir ilk adımdır.