MIME Type — bu nədir, fayl növləri və iOS-da təyini

Müəllif: IT Sectr Dərc olunub: 2026-07-11 Oxuma vaxtı: 7 dəq

MIME Type — iOS-da şəbəkə, fayl sistemi və proseslərarası kommunikasiya vasitəsilə ötürmə zamanı fayl növünü təyin etmək üçün istifadə olunan standartlaşdırılmış məlumat formatı identifikatorudur. Apple Developer Documentation, 2024-yə əsasən, MIME Type (Multipurpose Internet Mail Extensions) faylları məzmunlarına görə təsnif edir: image/jpeg, application/pdf, text/plain. iOS MIME-ni UTType vasitəsilə UTI-yə (Uniform Type Identifier) çevirərək sistemli fayl emalı üçün istifadə edir.

Əsas məlumatlar

  • MIME Type — iki hissədən ibarət məlumat formatı identifikatoru: növ/altnöv (image/png)
  • UTType — sistem daxilində fayl növlərini identifikasiya etmək üçün istifadə olunan iOS analoqu MIME
  • Konvertasiya MIME və UTI arasında UTType.preferredMIMEType vasitəsilə həyata keçirilir
  • MIME təyini fayl genişlənməsi, məzmunu (magic bytes) və ya HTTP başlığı ilə mümkündür
  • iOS Sandbox naməlum növ fayllara girişi məhdudlaşdırır — xüsusi növləri düzgün qeydiyyatdan keçirmək vacibdir

MIME Type nədir?

MIME Type (Multipurpose Internet Mail Extensions) — iki hissədən ibarət standartlaşdırılmış məlumat formatı identifikatorudur: əsas növ (type) və altnöv (subtype), kəsik işarəsi ilə ayrılır. Əsas kateqoriyalar: text (mətn), image (şəkillər), audio (səs), video (video), application (ikili məlumatlar), multipart (mürəkkəb mesajlar).

MIME standartı ilkin olaraq email əlavələri üçün işlənib hazırlanmışdır (RFC 2046, 1996), lakin bu gün hər yerdə istifadə olunur: HTTP serverləri cavabın Content-Type-ni göstərir, brauzerlər faylların necə emal ediləcəyini müəyyən edir, mobil tətbiqlər isə hansı məlumatların açıla biləcəyini təyin edir. IANA (Internet Assigned Numbers Authority) qeydiyyatdan keçmiş MIME növlərinin reyestrini aparır.

IANA Media Types Registry (2024)-yə əsasən, 1800-dən çox rəsmi MIME növü qeydiyyatdan keçib və xüsusi və vendor növləri nəzərə alınmaqla real sayı 5000-i keçir. iOS standart növlərin əksəriyyətini dəstəkləyir və onlarla işləmək üçün Uniform Type Identifiers vasitəsilə API təqdim edir.

iOS-da MIME və UTI: fərqlər və konvertasiya

UTI (Uniform Type Identifier) — iOS və macOS daxilində istifadə olunan Apple-ın məzmun növlərini identifikasiya etmək üçün öz sistemidir. MIME-dən fərqli olaraq, UTI miras iyerarxiyasını dəstəkləyir (məsələn, public.image — public.png və public.jpeg üçün valideyn) və yalnız fayl formatlarını deyil, həm də abstrakt məlumat növlərini əhatə edir.

MIME TypeUTIGenişlənməTəsvir
image/jpegpublic.jpeg.jpg, .jpegJPEG şəkli
application/pdfcom.adobe.pdf.pdfPDF sənədi
text/plainpublic.plain-text.txtMətn faylı
application/jsonpublic.json.jsonJSON məlumatları
video/mp4public.mpeg-4.mp4MP4 videosu

Konvertasiya MIME və UTI arasında iOS-da UTType sinfi (iOS 14+) vasitəsilə həyata keçirilir. Sistem əksər standart formatları əhatə edən daxili uyğunluq bazasını aparır. Xüsusi növlər üçün tərtibatçı Info.plist-də uyğunluğu qeydiyyatdan keçirir.

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 ?? "")")
}

// Tərs konvertasiya: UTI-dən MIME-ə
if let uti = UTType(filenameExtension: "pdf"),
   let mime = uti.preferredMIMEType {
    print("MIME for PDF: \(mime)")
}

UTI iyerarxiyası növün müəyyən kateqoriyaya uyğun olub-olmadığını yoxlamağa imkan verir. Məsələn, bütün şəkil növləri (JPEG, PNG, GIF) conforms(to: .image). Bu, qrup filtrasiyası və növün sistem komponentləri tərəfindən emal edilmə qabiliyyətini müəyyən etmək üçün əlverişlidir.

Əhəmiyyətli fərq: MIME — düz təsnifatdır (miras yoxdur), UTI isə çoxsaylı mirası dəstəkləyir. Məsələn, public.html həm public.source-code, həm də public.text-ə uyğundur. Bu, iOS-da faylların emalı zamanı daha çevik marşrutlaşdırma təmin edir.

iOS-da faylın MIME Type-ni necə təyin etmək olar

Üç metod iOS-da MIME Type təyini üçün mövcuddur: fayl genişlənməsinə görə (sürətli, lakin etibarsız), magic bytes vasitəsilə məzmuna görə (etibarlı, lakin faylın oxunmasını tələb edir) və HTTP Content-Type başlığına görə (yalnız şəbəkə sorğuları üçün).

swift
import UniformTypeIdentifiers

enum MIMEDetector {
    // Genişlənməyə görə aşkarla
    static func fromExtension(_ ext: String) -> String? {
        UTType(filenameExtension: ext)?.preferredMIMEType
    }

    // Məzmuna görə aşkarla (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
    }
}

Genişlənməyə görə təyin UTType vasitəsilə — ən sürətli üsuldur, lakin genişlənmə yoxdursa və ya saxtalaşdırılıbsa etibarsızdır. Təcavüzkar .exe faylını .jpg adlandıra bilər — sistem image/jpeg olaraq təyin edəcək, halbuki fayl icra olunandır. Kritik ssenarilər üçün (təhlükəsizlik, tibbi məlumatlar) mütləq məzmun yoxlamasından istifadə edin.

Magic bytes — hər format üçün unikal olan faylın ilk baytlarıdır. Əksər formatlar 2–12 baytdan ibarət imzaya malikdir. iOS məzmuna görə MIME-ni təyin etmək üçün daxili detektor təmin etmir — tərtibatçı ya imza cədvəlini özü həyata keçirir, ya da CocoaLumberjack kimi kitabxanalardan və ya evristikaya əsaslanan xüsusi detektordan istifadə edir.

Xüsusi MIME və UTI növlərinin qeydiyyatı

Xüsusi növlər IANA və ya Apple-da qeydiyyatdan keçməmiş mülkiyyət məlumat formatları ilə işləyən tətbiq üçün zəruridir. Info.plist-də qeydiyyat iOS-a bu cür faylları düzgün emal etməyə imkan verir: onları Files.app-dən açmaq, nişanlar göstərmək və UIActivityViewController vasitəsilə digər tətbiqlərə ötürmək.

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>

Xüsusi növü qeydiyyatdan keçirmək üçün Info.plist-də göstərilməlidir: UTI identifikatoru (reverse-DNS formatında), valideyn növlərə uyğunluq, fayl genişlənməsi və MIME növü. iOS faylların marşrutlaşdırılması üçün bu məlumatdan istifadə edir: istifadəçi .sdoc faylını açdıqda, sistem onun sahibinin sizin tətbiqiniz olduğunu bilir.

UTExportedTypeDeclarations — tətbiqiniz tərəfindən müəyyən edilən növlər üçün (ixrac). UTImportedTypeDeclarations — tətbiqinizin işləyə biləcəyi digər tətbiqlər tərəfindən yaradılmış növlər üçün (idxal). Apple sistemlə düzgün inteqrasiya üçün tətbiqin işlədiyi bütün xüsusi növləri qeydiyyatdan keçirməyi tövsiyə edir.

Təhlükəsizlik və naməlum növlərin emalı

Naməlum MIME növləri iOS tətbiqinin təhlükəsizliyi üçün risk təşkil edir. Fayl naməlum və ya yoxlanılmamış növə malikdirsə, tətbiq ehtiyat tədbirləri görməlidir: faylı avtomatik açmamalı, istifadəçiyə xəbərdarlıq göstərməli və ya emaldan əvvəl məzmunu təhlil etməlidir.

Əsas təhdidlər: saxta MIME növü olan fayl zərərli kod və ya parser zəifliyi üçün eksploit ehtiva edə bilər. iOS Sandbox vasitəsilə sistemi qoruyur, lakin tətbiq məzmunu yoxlamadan MIME növünə etibar edərsə, həssas ola bilər. Faylı etibarsız mənbədən almısınızsa, həmişə magic bytes ilə yoxlayın.

OWASP Mobile Security Guide, 2024-ə əsasən, naməlum növ faylların emalı üçün aşağıdakı təcrübələr tətbiq olunur: yoxlanılmamış mənbələrdən application/octet-stream MIME növü olan faylları rədd edin; gözlənilən kateqoriyalara uyğunluğu yoxlamaq üçün UTType-dən istifadə edin; istifadəçinin təsdiqi olmadan faylları xarici tətbiqlərdə açmayın; təhlükəsizlik auditi üçün MIME və faktiki məzmun arasındakı bütün uyğunsuzluq hallarını qeydə alın.

Info.plist-də xüsusi MIME növlərinin qeydiyyatı — bu təkcə funksionallıq deyil, həm də təhlükəsizlikdir. Tətbiq yalnız öz növlərini düzgün qeydiyyatdan keçirirsə, sistem səhvən ona kənar faylları ötürməyəcək. Digər tətbiqlərlə konfliktlərin qarşısını almaq üçün ümumi (application/x-format) əvəzinə spesifik vendor prefikslərindən (application/vnd.company.app-format) istifadə edin.

Tez-tez verilən suallar

MIME Type nədir?

MIME Type — növ və altnövüdən ibarət standart məlumat formatı identifikatorudur (məsələn, image/jpeg). HTTP serverləri, brauzerlər və tətbiqlər tərəfindən faylın emal üsulunu müəyyən etmək üçün istifadə olunur.

UTI iOS-da MIME-dən nə ilə fərqlənir?

UTI (Uniform Type Identifier) — miras iyerarxiyasını dəstəkləyən Apple-ın məzmun növlərini identifikasiya sistemi. MIME — şəbəkə üçün düz standartdır. iOS UTI və MIME arasında konvertasiya üçün preferredMIMEType xassəsi vasitəsilə UTType-dən istifadə edir.

iOS-da faylın MIME Type-ni necə təyin etmək olar?

Üç üsul: genişlənməyə görə UTType(filenameExtension:) vasitəsilə, məzmuna görə magic bytes (faylın ilk baytları) vasitəsilə, HTTP başlığına görə Content-Type. Təhlükəsizlik üçün yalnız genişlənməyə deyil, məzmuna görə yoxlamadan istifadə edin.

iOS-da xüsusi MIME növünü necə qeydiyyatdan keçirmək olar?

Info.plist-də UTExportedTypeDeclarations əlavə edin: UTI identifikatoru (com.company.format), fayl genişlənməsi, MIME növü və valideyn növü göstərin. Bu genişlənməyə malik fayllar avtomatik olaraq tətbiqinizlə əlaqələndiriləcək.

Naməlum MIME növləri ilə nə etməli?

Etibar etməyin naməlum MIME-ə. Məzmunu magic bytes ilə yoxlayın, istifadəçiyə xəbərdarlıq göstərin və faylı avtomatik açmayın. Application/octet-stream növü olan fayllar üçün emaldan əvvəl həmişə evristik analiz aparın.

Nəticə

  • MIME Type — HTTP və iOS-da istifadə olunan standartlaşdırılmış məlumat formatı identifikatoru (növ/altnöv)
  • UTType — iyerarxiya və MIME→UTI konvertasiyasını dəstəkləyən iOS API-si məzmun növləri ilə iş üçün
  • Növün təyini genişlənmə, magic bytes və ya HTTP Content-Type başlığı ilə həyata keçirilir
  • Xüsusi növlər UTExportedTypeDeclarations vasitəsilə Info.plist-də qeydiyyatdan keçirilir
  • Təhlükəsizlik məzmunun yoxlanılmasını tələb edir — başlıqdakı MIME saxtalaşdırıla bilər
  • UTI iyerarxiyası conforms(to:) vasitəsilə fayl kateqoriyasını (şəkil, mətn, video) yoxlamağa imkan verir
  • Application/octet-stream — naməlum ikili məlumatlar üçün universal növ, evristik analiz tələb edir

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun