Кіріспе

Компьютерлік бағдарлама немесе бірнеше бағдарламалау тілдерінде немесе файл пішімдерінде жарамды файл. Компьютерлік саласында, полиглот – бірнеше бағдарламалау тілінде немесе файл пішімінде жарамды түрде жазылған компьютерлік бағдарлама немесе сценарий (немесе басқа файл). Бұл атау көптілділікпен салмақтас. Полиглот файл екі немесе одан көп түрлі форматтардың синтаксисін біріктіру арқылы құрастырылады. Егер файл пішімдері бастапқы код ретінде компиляцияланса немесе интерпретацияланса, онда бұл файлды полиглот бағдарламасы деп айтуға болады, алайда файл пішімдері мен бастапқы код синтаксисі – негізінен байттар ағыны, және осы ортақтықты пайдалану полиглоттарды жасаудың кілті болып табылады. Полиглот файлдар үйлесімділік үшін практикалық қолданысқа ие, бірақ олар тексеруден қашуға немесе осалдықты пайдалануға қолданылған жағдайда қауіпсіздік қаупін тудыруы мүмкін.

Тарих

Полиглот бағдарламалары кем дегенде 1990 жылдардың басынан бері хакерлер мәдениетінде сынақтар мен қызығушылық тудыратын нәрсе ретінде жасалып келді. Ерекше ерте мысал, жай ғана "полиглот" деп аталған, 1991 жылы Usenet тобы rec.puzzles-де жарияланды, ол 8 тілді қолдады, бірақ бұл одан да ертерек бағдарламалардан шабыттанды. 2000 жылы халықаралық Obfuscated C Code байқауында полиглот бағдарлама жеңімпаз атанды. 21-ші ғасырда полиглот бағдарламалары мен файлдары зиянды бағдарламаларды жасырын тарату механизмі ретінде назар аударды. Мұндай құжаттар HTML (SGML-мен үйлесімді) немесе XML ретінде талданып, екі жағдайда да бірдей DOM құрылымын құрастырады. Мысалы, HTML5 құжаты осы талаптарға сәйкес болу үшін екі нәрсе қажет: HTML5 doctype болуы және жақсы құрылған XHTML форматында жазылуы керек. Сол құжатты браузердің қолдауына және MIME түріне байланысты HTML немесе XHTML ретінде көрсетуге болады. html полиглоты ұсынымында айтылғандай, мысалы, бетке бос textarea қосу үшін <textarea/> қолданылмайды, оның орнына <textarea></textarea> қолдану керек.

Құрастыру форматтары

DICOM медициналық суреттеу форматы TIFF файлдарымен үйлесімді жұмыс істеуге арналған, бұл DICOM немесе TIFF бағдарламаларымен оқыла алатын файлда бірдей сурет деректерін тиімді сақтауға мүмкіндік береді.

Бір-біріне үйлесімділік

Python 2 және Python 3 бағдарламалау тілдері бір-бірімен үйлесімді болу мақсатымен жасалмаған, бірақ олардың синтаксисіндегі ортақтыққа байланысты, екі нұсқада да жұмыс істейтін бір бағдарламаны жазу мүмкін.

GIFAR шабуыл

Графикалық алмасу форматының Java архивтері (GIFAR) – GIF және JAR файл форматтарында бір мезгілде болатын көптілді файл. Бұл техника қауіпсіздіктегі осал жерлерді пайдалану үшін қолданылуы мүмкін, мысалы, бейнелерді жүктеуге рұқсат беретін веб-сайтқа GIFAR жүктеу арқылы (өйткені бұл жарамды GIF файлы), содан кейін GIFAR-дың Java бөлігі веб-сайттың арналған кодының бір бөлігі ретінде орындалады, сол бастапқы доменнен браузерге жіберіледі. Java-ның бұл осалдығы JRE 6 Update 11-де түзетілді, CVE 2008 жылдың желтоқсан айында жарияланды. GIFAR-лардың болуы мүмкін, себебі GIF суреттері өздерінің бас файлдарын файлдың басында сақтайды, ал JAR файлдары (кәдімгі ZIP архивтік форматтары сияқты) деректерін соңында сақтайды.

Терминдер

Көптілді бағдарламалау – бірнеше бағдарламалау тілін қолданып жүйе құру тәжірибесі, бірақ бұл міндетті түрде бір файлда болмайды. Көптілді тұрақтылық та осыған ұқсас, бірақ ол дерекқоры туралы.