Defaults.Exposed

Defaults.ExposedDü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

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.

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:

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.

Apachemod_headers etkin olmalı; site yapılandırmasında veya .htaccess’te:

Header always set X-Content-Type-Options "nosniff"

IIS / Windows barındırmaweb.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

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.