MIME Type — bu nima, fayl turlari va iOS da aniqlash

Muallif: IT Sectr Nashr etilgan: 2026-07-11 O'qish vaqti: 7 daq

MIME Type — iOS da tarmoq, fayl tizimi va jarayonlararo aloqa orqali uzatishda fayl turini aniqlash uchun ishlatiladigan standartlashtirilgan ma'lumot formati identifikatoridir. Apple Developer Documentation, 2024 ma'lumotlariga ko'ra, MIME Type (Multipurpose Internet Mail Extensions) fayllarni mazmuniga qarab tasniflaydi: image/jpeg, application/pdf, text/plain. iOS MIME ni UTType orqali UTI (Uniform Type Identifier) ga konvertatsiya qiladi tizimli faylni qayta ishlash uchun.

Asosiy ma'lumotlar

  • MIME Type — ikki qismli ma'lumot formati identifikatori: tur/kichik tur (image/png)
  • UTType — tizim ichida fayl turlarini identifikatsiya qilish uchun ishlatiladigan iOS ning MIME analogi
  • Konvertatsiya MIME va UTI o'rtasida UTType.preferredMIMEType orqali amalga oshiriladi
  • MIME ni aniqlash fayl kengaytmasi, mazmuni (magic bytes) yoki HTTP sarlavhasi orqali mumkin
  • iOS Sandbox noma'lum turdagi fayllarga kirishni cheklaydi — maxsus turlarni to'g'ri ro'yxatdan o'tkazish muhim

MIME Type nima?

MIME Type (Multipurpose Internet Mail Extensions) — ikki qismdan iborat standartlashtirilgan ma'lumot formati identifikatori: asosiy tur (type) va kichik tur (subtype), qiyshiq chiziq bilan ajratilgan. Asosiy kategoriyalar: text (matn), image (tasvirlar), audio (ovoz), video (video), application (ikkilik ma'lumotlar), multipart (murakkab xabarlar).

MIME standarti dastlab email ilovalari uchun ishlab chiqilgan (RFC 2046, 1996), ammo bugungi kunda hamma joyda qo'llaniladi: HTTP serverlari javobning Content Typeni ko'rsatadi, brauzerlar fayllarni qanday qayta ishlashni aniqlaydi va mobil ilovalar — qaysi ma'lumotlarni ochish mumkinligini belgilaydi. IANA (Internet Assigned Numbers Authority) ro'yxatdan o'tgan MIME turlari reestrini yuritadi.

IANA Media Types Registry (2024) ma'lumotlariga ko'ra, 1800 dan ortiq rasmiy MIME turi ro'yxatdan o'tgan va maxsus va vendor turlarini hisobga olgan holda haqiqiy son 5000 dan oshadi. iOS standart turlarning aksariyatini qo'llab-quvvatlaydi va ular bilan ishlash uchun Uniform Type Identifiers orqali API taqdim etadi.

iOS da MIME va UTI: farqlar va konvertatsiya

UTI (Uniform Type Identifier) — iOS va macOS ichida ishlatiladigan Apple ning kontent turlarini identifikatsiya qilish tizimi. MIME dan farqli o'laroq, UTI meros ierarxiyasini qo'llab-quvvatlaydi (masalan, public.image — public.png va public.jpeg uchun ota-ona) va nafaqat fayl formatlarini, balki mavhum ma'lumot turlarini ham o'z ichiga oladi.

MIME TypeUTIKengaytmaTavsif
image/jpegpublic.jpeg.jpg, .jpegJPEG tasvir
application/pdfcom.adobe.pdf.pdfPDF hujjat
text/plainpublic.plain-text.txtMatn fayli
application/jsonpublic.json.jsonJSON ma'lumotlari
video/mp4public.mpeg-4.mp4MP4 video

Konvertatsiya MIME va UTI o'rtasida iOS da UTType klassi (iOS 14+) orqali amalga oshiriladi. Tizim ko'pchilik standart formatlarni qamrab oluvchi ichki muvofiqlik bazasini yuritadi. Maxsus turlar uchun dasturchi Info.plist da muvofiqlikni ro'yxatdan o'tkazadi.

swift
import UniformTypeIdentifiers

let mimeType = "image/jpeg"
if let uti = UTType(mimeType: mimeType) {
    print("UTI: \(uti.identifier)")
    print("Conforms to image: \(uti.conforms(to: .image))")
    print("Extension: \(uti.preferredFilenameExtension ?? "")")
}

// Teskari konvertatsiya: UTI dan MIME ga
if let uti = UTType(filenameExtension: "pdf"),
   let mime = uti.preferredMIMEType {
    print("MIME for PDF: \(mime)")
}

UTI ierarxiyasi turning ma'lum bir kategoriyaga mos kelishini tekshirish imkonini beradi. Masalan, barcha tasvir turlari (JPEG, PNG, GIF) conforms(to: .image). Bu guruh filtrlash va turni tizim komponentlari tomonidan qayta ishlash qobiliyatini aniqlash uchun qulay.

Muhim farq: MIME — tekis tasnif (merossiz), UTI esa ko'p merosni qo'llab-quvvatlaydi. Masalan, public.html ham public.source-code ga, ham public.text ga mos keladi. Bu iOS da fayllarni qayta ishlashda yanada moslashuvchan marshrutlashni ta'minlaydi.

iOS da faylning MIME Type ini qanday aniqlash

Uch usul iOS da MIME Type ni aniqlash uchun mavjud: fayl kengaytmasi bo'yicha (tez, ammo ishonchsiz), magic bytes orqali mazmun bo'yicha (ishonchli, ammo faylni o'qishni talab qiladi) va HTTP Content-Type sarlavhasi bo'yicha (faqat tarmoq so'rovlari uchun).

swift
import UniformTypeIdentifiers

enum MIMEDetector {
    // Kengaytma bo'yicha aniqlash
    static func fromExtension(_ ext: String) -> String? {
        UTType(filenameExtension: ext)?.preferredMIMEType
    }

    // Mazmun bo'yicha aniqlash (magic bytes)
    static func fromFile(at url: URL) -> String? {
        guard let handle = try? FileHandle(forReadingFrom: url) else {
            return nil
        }
        defer { handle.closeFile() }
        let header = handle.readData(ofLength: 12)

        // PNG: 89 50 4E 47 0D 0A 1A 0A
        // JPEG: FF D8 FF
        // PDF: 25 50 44 46
        // ZIP: 50 4B 03 04

        if header.starts(with: [0x89, 0x50, 0x4E, 0x47]) {
            return "image/png"
        }
        if header.starts(with: [0xFF, 0xD8, 0xFF]) {
            return "image/jpeg"
        }
        if header.starts(with: [0x25, 0x50, 0x44, 0x46]) {
            return "application/pdf"
        }
        return nil
    }
}

Kengaytma bo'yicha aniqlash UTType orqali — eng tez usul, ammo kengaytma bo'lmasa yoki soxtalashtirilgan bo'lsa ishonchsiz. Tajovuzkor .exe faylini .jpg deb nomlashi mumkin — tizim image/jpeg deb aniqlaydi, holbuki fayl bajariladigan. Kritik stsenariylar uchun (xavfsizlik, tibbiy ma'lumotlar) majburiy ravishda mazmun bo'yicha tekshirishdan foydalaning.

Magic bytes — har bir format uchun noyob bo'lgan faylning birinchi baytlari. Ko'pchilik formatlar 2–12 baytdan iborat imzoga ega. iOS mazmun bo'yicha MIME ni aniqlash uchun o'rnatilgan detektorni taqdim etmaydi — dasturchi imzo jadvalini o'zi amalga oshiradi yoki CocoaLumberjack kabi kutubxonalardan yoki evristikaga asoslangan maxsus detektordan foydalanadi.

Maxsus MIME va UTI turlarini ro'yxatdan o'tkazish

Maxsus turlar IANA yoki Apple da ro'yxatdan o'tmagan xususiy ma'lumot formatlari bilan ishlaydigan ilova uchun zarur. Info.plist da ro'yxatdan o'tkazish iOS ga bunday fayllarni to'g'ri qayta ishlash imkonini beradi: ularni Files.app dan ochish, piktogrammalarni ko'rsatish va UIActivityViewController orqali boshqa ilovalarga uzatish.

xml
<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>MyApp Document</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.myapp.secret-doc</string>
        </array>
    </dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeIdentifier</key>
        <string>com.myapp.secret-doc</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array><string>sdoc</string></array>
            <key>public.mime-type</key>
            <array><string>application/vnd.myapp.secret-doc</string></array>
        </dict>
    </dict>
</array>

Maxsus turni ro'yxatdan o'tkazish uchun Info.plist da ko'rsatish kerak: UTI identifikatori (reverse-DNS formatida), ota-ona turlarga muvofiqlik, fayl kengaytmasi va MIME turi. iOS fayllarni marshrutlash uchun ushbu ma'lumotdan foydalanadi: foydalanuvchi .sdoc faylini ochganda, tizim uning egasi sizning ilovangiz ekanligini biladi.

UTExportedTypeDeclarations — ilovangiz tomonidan belgilanadigan turlar uchun (eksport). UTImportedTypeDeclarations — ilovangiz ishlashi mumkin bo'lgan boshqa ilovalar tomonidan yaratilgan turlar uchun (import). Apple tizim bilan to'g'ri integratsiya uchun ilova ishlaydigan barcha maxsus turlarni ro'yxatdan o'tkazishni tavsiya qiladi.

Xavfsizlik va noma'lum turlarni qayta ishlash

Noma'lum MIME turlari iOS ilovasining xavfsizligi uchun xavf tug'diradi. Agar fayl noma'lum yoki tekshirilmagan turga ega bo'lsa, ilova ehtiyot choralarini ko'rishi kerak: faylni avtomatik ochmaslik, foydalanuvchiga ogohlantirish ko'rsatish yoki qayta ishlashdan oldin mazmunni tahlil qilish.

Asosiy tahdidlar: soxta MIME turiga ega fayl zararli kod yoki parser zaifligi uchun eksploitni o'z ichiga olishi mumkin. iOS Sandbox orqali tizimni himoya qiladi, ammo ilova mazmunni tekshirmasdan MIME turiga ishonsa, zaif bo'lishi mumkin. Faylni ishonchsiz manbadan olgan bo'lsangiz, har doim magic bytes orqali tekshiring.

OWASP Mobile Security Guide, 2024 ma'lumotlariga ko'ra, noma'lum turdagi fayllarni qayta ishlash uchun quyidagi amaliyotlar qo'llaniladi: tekshirilmagan manbalardan application/octet-stream MIME turidagi fayllarni rad eting; kutilgan kategoriyalarga muvofiqlikni tekshirish uchun UTType dan foydalaning; foydalanuvchi tasdig'isiz fayllarni tashqi ilovalarda ochmang; xavfsizlik auditi uchun MIME va haqiqiy mazmun o'rtasidagi barcha nomuvofiqlik holatlarini qayd eting.

Info.plist da maxsus MIME turlarini ro'yxatdan o'tkazish — bu nafaqat funksionallik, balki xavfsizlikdir. Agar ilova faqat o'z turlarini to'g'ri ro'yxatdan o'tkazsa, tizim xato bilan unga begona fayllarni yubormaydi. Boshqa ilovalar bilan ziddiyatlarni oldini olish uchun umumiy (application/x-format) o'rniga o'ziga xos vendor prefikslaridan (application/vnd.company.app-format) foydalaning.

Tez-tez so'raladigan savollar

MIME Type nima?

MIME Type — tur va kichik turdan iborat standart ma'lumot formati identifikatori (masalan, image/jpeg). HTTP serverlari, brauzerlar va ilovalar tomonidan faylni qayta ishlash usulini aniqlash uchun ishlatiladi.

UTI iOS da MIME dan qanday farq qiladi?

UTI (Uniform Type Identifier) — meros ierarxiyasini qo'llab-quvvatlovchi Apple ning kontent turlarini identifikatsiya qilish tizimi. MIME — tarmoq uchun tekis standart. iOS UTI va MIME o'rtasida preferredMIMEType xususiyati orqali UTType dan foydalanib konvertatsiya qiladi.

iOS da faylning MIME Type ini qanday aniqlash mumkin?

Uch usul: kengaytma bo'yicha UTType(filenameExtension:) orqali, mazmun bo'yicha magic bytes (faylning birinchi baytlari) orqali, HTTP sarlavhasi bo'yicha Content-Type. Xavfsizlik uchun faqat kengaytmaga emas, balki mazmun bo'yicha tekshirishdan foydalaning.

iOS da maxsus MIME turini qanday ro'yxatdan o'tkazish mumkin?

Info.plist ga UTExportedTypeDeclarations qo'shing: UTI identifikatori (com.company.format), fayl kengaytmasi, MIME turi va ota-ona turni ko'rsating. Ushbu kengaytmaga ega fayllar avtomatik ravishda ilovangiz bilan bog'lanadi.

Noma'lum MIME turlari bilan nima qilish kerak?

Ishonmang noma'lum MIME ga. Mazmunni magic bytes orqali tekshiring, foydalanuvchiga ogohlantirish ko'rsating va faylni avtomatik ochmang. Application/octet-stream turidagi fayllar uchun har doim qayta ishlashdan oldin evristik tahlil o'tkazing.

Xulosa

  • MIME Type — HTTP va iOS da ishlatiladigan standartlashtirilgan ma'lumot formati identifikatori (tur/kichik tur)
  • UTType — ierarxiya va MIME→UTI konvertatsiyasini qo'llab-quvvatlovchi iOS API si kontent turlari bilan ishlash uchun
  • Turni aniqlash kengaytma, magic bytes yoki HTTP Content-Type sarlavhasi orqali amalga oshiriladi
  • Maxsus turlar UTExportedTypeDeclarations orqali Info.plist da ro'yxatdan o'tkaziladi
  • Xavfsizlik mazmunni tekshirishni talab qiladi — sarlavhadagi MIME soxtalashtirilishi mumkin
  • UTI ierarxiyasi conforms(to:) orqali fayl kategoriyasini (tasvir, matn, video) tekshirish imkonini beradi
  • Application/octet-stream — noma'lum ikkilik ma'lumotlar uchun universal tur, evristik tahlil talab qiladi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing