Dil seç

MIME Türü Denetleyici

Dosya yükleyin veya uzantı arayın; doğru MIME türünü dosya imzasından tespit edin, Content-Type başlıkları için hazır değeri tek tıkla kopyalayın.

Mehmet Demiray Yayınlandı Güncellendi
Paylaş
Tarayıcınızda okunur. Sunucuya yüklenmez.

MIME Türleri Nedir?

MIME, açılımıyla Multipurpose Internet Mail Extensions, bir dosyanın ya da veri parçasının hangi türde olduğunu tanımlayan standart bir etiketleme sistemidir. İnternetin ilk yıllarında e-posta yalnızca düz metin taşıyabiliyordu. Resim, ses veya belge gibi ekleri güvenle iletebilmek için 1 Ocak 1992 civarında geliştirilen bu standart, zamanla e-postanın çok ötesine geçip tüm web'in temel taşlarından biri hâline geldi. Bugün bir tarayıcının bir dosyayı nasıl işleyeceğine karar vermesi, büyük ölçüde MIME türüne bakmasıyla mümkün olur.

Bir MIME türü her zaman iki parçadan oluşur: type/subtype. Eğik çizginin solundaki bölüm genel kategoriyi, sağındaki bölüm ise o kategori içindeki özel biçimi belirtir. Örneğin text/html bir HTML belgesini, image/png bir PNG görselini, application/json ise bir JSON verisini anlatır. Ana kategoriler arasında text, image, audio, video, application ve multipart gibi başlıklar bulunur.

Bu etiketler tahmine değil, kayıtlı bir standarda dayanır. IANA adlı kuruluş binlerce resmi MIME türünü bir kayıt altında tutar; MIME Türü Denetleyici de yüzlerce bu kayıtlı türü tanır. Bir dosyanın gerçek türünü doğru okumak, sunucu yapılandırmasından güvenliğe kadar birçok konuda hataların önüne geçtiği için, MIME kavramını doğru anlamak her web geliştiricisi için bir başlangıç noktasıdır.

MIME Türü Tespiti Nasıl Çalışır?

Bir dosyanın gerçek türünü belirlemenin birden fazla yolu vardır ve MIME Türü Denetleyici bu yöntemleri bir arada kullanarak en güvenilir sonucu üretir. En sağlam yöntem, dosyanın içeriğine doğrudan bakmaktır. Çoğu dosya biçimi, en başında kendine özgü bir imza taşır. Bu ilk baytlara sihirli baytlar (magic bytes) denir. Örneğin bir PNG dosyası her zaman aynı bayt dizisiyle başlar, bir PDF ise %PDF karakterleriyle açılır. Uzantı ne olursa olsun bu imza değişmez, bu yüzden en güvenilir kaynak odur.

İkinci yöntem dosya uzantısına bakmaktır. .jpg, .mp3 ya da .docx gibi uzantılar hızlı bir ipucu verir. Ancak uzantı kolayca değiştirilebildiği için tek başına güvenilir sayılmaz. Bir kullanıcı bir dosyanın adını değiştirdiğinde içeriği aynı kalır, dolayısıyla uzantı yanıltıcı olabilir. Tespit aracı bu nedenle uzantıyı yalnızca bir yedek kaynak olarak kullanır.

Üçüncü kaynak, bir dosya bir adresten çekildiğinde sunucunun gönderdiği HTTP başlıklarıdır. Sunucu Content-Type başlığında dosyanın türünü bildirir ve araç bunu da hesaba katar.

Bu üç kaynağın verdiği sonuçlar her zaman birbiriyle örtüşmez. Bu yüzden iyi bir tespit, bir de güven düzeyi sunar. İçerik imzası ile uzantı aynı türü işaret ediyorsa sonuç yüksek güvenle verilir; yalnızca uzantıya dayanan bir tahmin ise daha düşük güvenle işaretlenir. Böylece kullanıcı sonucun ne kadar kesin olduğunu görebilir.

Yaygın Kullanılan MIME Türleri

Günlük web geliştirmede karşılaşılan MIME türlerinin büyük kısmı birkaç ana kategoriye toplanır. Bu türleri tanımak, hem sunucu yapılandırmasını hem de hata ayıklamayı çok kolaylaştırır. Aşağıdaki tablo en sık rastlanan türleri kategorilerine göre özetler.

Kategori MIME Türü Açıklama
Görsel image/png PNG görsel
Görsel image/jpeg JPEG fotoğraf
Görsel image/svg+xml Vektörel SVG
Belge application/pdf PDF belgesi
Belge text/html HTML sayfası
Belge text/csv Virgülle ayrılmış tablo
Ses audio/mpeg MP3 ses
Video video/mp4 MP4 video
Veri application/json JSON verisi
Veri application/xml XML verisi

text ile başlayan türler insan tarafından okunabilir düz içerikleri anlatır. image, audio ve video kategorileri medya dosyalarını kapsar. application kategorisi ise en geniş olanıdır; JSON, PDF, ZIP arşivleri ve tarayıcının doğrudan gösteremediği pek çok ikili biçim bu başlık altında toplanır.

Özel bir durum da application/octet-stream türüdür. Bir dosyanın türü kesin olarak belirlenemediğinde bu genel etiket kullanılır ve tarayıcı çoğu zaman dosyayı görüntülemek yerine indirmeyi önerir. Bir dosyanın Base64 gibi metin biçimine dönüştürülmesi gereken durumlarda türün doğru bilinmesi ayrıca önem taşır; bu tür dönüşümler için Dosyayı Base64'e çevir aracı işinizi kolaylaştırır.

MIME Türleri Neden Önemlidir?

MIME türleri arka planda çalışan sessiz kurallardır, ama yanlış ayarlandıklarında sorunlar hızla görünür hâle gelir. En sık karşılaşılan alan sunucu yapılandırmasıdır. Bir web sunucusu bir dosyayı gönderirken Content-Type başlığında onun MIME türünü belirtir. Bu değer yanlışsa tarayıcı bir CSS dosyasını düz metin sanabilir ya da bir JSON yanıtını yorumlayamayabilir. Sonuçta sayfa bozuk görünür veya uygulama beklenmedik biçimde çalışır.

İkinci kritik alan güvenliktir. Kullanıcıların dosya yükleyebildiği her sistemde, gelen dosyanın gerçekten iddia ettiği türde olup olmadığını doğrulamak gerekir. Yalnızca uzantıya güvenmek tehlikelidir, çünkü zararlı bir betik masum bir .jpg uzantısıyla gizlenebilir. İçerik imzasına bakan bir doğrulama, bu tür saldırıların önemli bir bölümünü engeller. Yüklenen bir dosyanın gerçek türünü ve bütünlüğünü kontrol etmek için içeriğin özetini almak da yaygın bir yöntemdir; bunun için dosyanın MD5 özetini hesaplayabilirsiniz.

Üçüncü alan e-posta ekleridir. MIME standardının doğduğu yer burasıdır ve bir eklentinin doğru türle etiketlenmesi, alıcının onu doğru uygulamada açabilmesi anlamına gelir. Yanlış etiketlenen bir ek, karşı tarafta bozuk ya da tanınmayan bir dosya olarak görünebilir.

Kısacası MIME türleri; sayfaların doğru görüntülenmesi, kullanıcıların korunması ve dosyaların doğru uygulamalara ulaşması için doğru olması gereken küçük ama belirleyici bir ayrıntıdır. MIME Türü Denetleyici bu değeri hızla doğrulayarak bu üç alanda da yaşanan sorunların kaynağını görmenizi sağlar.

MIME Türü ile Dosya Uzantısı Arasındaki Fark

Birçok kişi dosya uzantısı ile MIME türünü aynı şey sanır, oysa ikisi farklı katmanlarda çalışır. Dosya uzantısı, dosya adının sonundaki .pdf ya da .png gibi kısa ektir ve öncelikle işletim sisteminin dosyayı hangi programla açacağına karar vermesine yarar. Uzantı dosyanın adının bir parçasıdır, içeriğinin değil. Bu yüzden bir dosyanın adını yeniden adlandırıp uzantısını değiştirmek, içeriğine hiç dokunmaz.

MIME türü ise dosyanın gerçek biçimini tanımlayan ve özellikle ağ üzerinde taşınırken kullanılan bir etikettir. Bir tarayıcı bir dosyayı işlerken çoğu zaman uzantıya değil, sunucunun bildirdiği ya da içerikten okunan MIME türüne bakar. İşte bu ayrım, aşağıdaki karşılaştırmada netleşir.

Özellik Dosya uzantısı MIME türü
Bulunduğu yer Dosya adının sonu HTTP başlığı veya içerik
Amaç Programı seçmek Biçimi bildirmek
Değiştirilebilirlik Çok kolay İçeriğe bağlı
Güvenilirlik Düşük Yüksek

İki değer çoğu zaman uyumludur, çünkü .png uzantılı bir dosya genellikle image/png türündedir. Ancak uyum garanti değildir. Uzantı elle değiştirilmiş olabilir ya da sunucu yanlış yapılandırılmış olabilir. Bu yüzden bir dosyanın türünden emin olmak istediğinizde uzantıya değil, içeriğe dayanan bir denetim yapmak gerekir.

Sunucular Neden Yanlış İçerik Türü Gönderir?

Bir dosya tarayıcıda beklendiği gibi görünmüyorsa, sorunun kaynağı çoğu zaman sunucunun gönderdiği yanlış Content-Type başlığıdır. Bunun birkaç tipik nedeni vardır ve hepsi de yapılandırmayla ilgilidir.

En yaygın neden, sunucunun bir uzantıyı tanımamasıdır. Web sunucuları, hangi uzantının hangi MIME türüne karşılık geldiğini bir eşleme tablosundan okur. Tabloda bulunmayan yeni ya da az bilinen bir uzantı için sunucu, güvenli varsayılan olan application/octet-stream türünü gönderir. Bu durumda tarayıcı dosyayı göstermek yerine indirmeyi önerir.

İkinci neden yanlış ya da eksik yapılandırmadır. Yeni bir dosya türü siteye eklendiğinde sunucu yapılandırmasının da güncellenmesi gerekir. Bu adım atlanırsa, örneğin bir yazı tipi dosyası ya da bir .webp görseli yanlış türle sunulabilir ve tarayıcı onu reddedebilir.

Üçüncü neden karakter kodlamasının belirtilmemesidir. Bir metin dosyası doğru türle gönderilse bile, charset bilgisi eksikse Türkçe karakterler bozuk görünebilir. Doğru başlık text/html; charset=utf-8 biçiminde kodlamayı da içermelidir.

Sorunu çözmek için önce dosyanın gerçek türünü öğrenmek, sonra sunucunun ne gönderdiğini karşılaştırmak gerekir. MIME Türü Denetleyici ile bir adresi denetlediğinizde, sunucunun bildirdiği tür ile dosyanın içeriğinden okunan gerçek tür yan yana görünür. İki değer arasında bir uyumsuzluk varsa, sorunun sunucu yapılandırmasında olduğunu anında anlarsınız ve doğru MIME eşlemesini ekleyerek durumu düzeltebilirsiniz.

En çok yanıtladıklarımız.

MIME Türü Denetleyici'yi kullanmak için dosyayı yüklemem gerekir mi?

Hayır, iki yol da mümkündür. İster bilgisayarınızdan bir dosya yükleyebilir, ister doğrudan bir adres (URL) girebilirsiniz. Dosya yüklerseniz araç içerikteki imzayı ve uzantıyı okur; bir adres girerseniz sunucunun gönderdiği Content-Type başlığını da hesaba katar. İki yöntem de aynı sonuç ekranını verir.

Bir dosyanın uzantısı ile MIME türü uyuşmuyorsa ne yapmalıyım?

Önce hangi kaynağa güveneceğinize karar verin. MIME Türü Denetleyici içerik imzasına dayalı sonucu daha güvenilir kabul eder, çünkü uzantı elle değiştirilmiş olabilir. Uyumsuzluk bir güvenlik sinyali de olabilir; masum görünen bir uzantının altında farklı bir içerik gizlenmiş olabilir. Bu yüzden gerçek türü içerikten doğrulayıp dosyayı ona göre işlemek en güvenli yaklaşımdır.

Araç dosyamı sunucuya gönderiyor mu, gizliliğim korunuyor mu?

MIME türü tespitinin büyük kısmı dosyanın yalnızca ilk birkaç yüz baytına bakılarak yapılabildiği için, işlemin çoğu içeriğin küçük bir parçasıyla tamamlanır. Hassas bir belgenin türünü kontrol ederken tereddüt ederseniz, aynı türden örnek bir dosyayla test edip sonucu görebilirsiniz.

Uzantısı olmayan bir dosyanın türünü nasıl öğrenebilirim?

Uzantısız dosyalar tam da bu aracın işe yaradığı durumdur. Uzantı olmadığında MIME Türü Denetleyici içerikteki sihirli baytlara bakarak türü belirler. Bir sunucudan indirdiğiniz, adı rastgele karakterlerden oluşan ya da uzantısı silinmiş dosyalarda bu yöntem çoğu zaman doğru sonucu verir.

text/plain ile application/octet-stream arasındaki fark nedir?

text/plain bir dosyanın insan tarafından okunabilir düz metin olduğunu belirtir ve tarayıcı onu doğrudan gösterebilir. application/octet-stream ise türü belirlenemeyen genel ikili veriyi anlatır; tarayıcı bunu görüntülemek yerine indirmeyi önerir. Sunucunuz metin dosyalarını octet-stream olarak sunuyorsa, yapılandırmada doğru MIME eşlemesi eksik demektir.

MIME türünü öğrendikten sonra dosyayı Base64'e nasıl çeviririm?

Doğru MIME türünü bilmek, bir dosyayı Base64 biçiminde gömerken veya bir veri URI'si oluştururken gereklidir, çünkü tür bilgisi çıktının başına yazılır. Türü denetledikten sonra dosyanızı Base64'e çevirebilir, ters yönde ise Base64 metnini yeniden dosyaya dönüştürebilirsiniz.

Bir sunucudaki dosyanın gerçek türü ile bildirilen türü aynı anda görebilir miyim?

Evet. Bir adres girdiğinizde MIME Türü Denetleyici hem sunucunun Content-Type başlığında bildirdiği türü hem de dosyanın içeriğinden okunan gerçek türü gösterir. İki değer arasında bir fark varsa, sorunun sunucu yapılandırmasında olduğunu hemen anlar ve doğru eşlemeyi ekleyerek düzeltebilirsiniz.