INI podešavanja (.ini)
De StandardKonfiguracija inicijalizacije Windowsa (INI) klasičan je, ljudima čitljiv format konfiguracionih datoteka koji je popularizovao Microsoft Windows. Podešavanja aplikacije organizuje u imenovane [odeljke] koji sadrže parove ključ=vrednost.
Konvertujte INI u JSON
Besplatan konvertor INI u JSON u pregledaču. Konvertujte datoteke odmah na svom uređaju.
Pregled i metapodaci
Operativni sistemi i analizatori datoteka identifikuju INI datoteke proverom početnog binarnog niza bajtova:
Potpis zaglavlja na nivou bajtova (magični bajtovi)
Operativni sistemi i analizatori datoteka identifikuju INI datoteke proverom početnog binarnog niza bajtova:
HEKSADECIMALNI POTPIS (OFFSET 0):
5B ... 5DASCII REPREZENTACIJA: [...]
Standardizacija: De facto industrijski standard za konfiguraciju
Tehničke specifikacije
| Arhitektura kontejnera | Tekstualna konfiguraciona datoteka organizovana pomoću zaglavlja [odeljak], koja sadrže parove ključ = vrednost i komentare (; ili #) |
| Kompresija | Nekomprimovana tekstualna datoteka |
| Bajtni redosled (Endianness) | Tekstualni tok UTF-8 ili ANSI |
| Prostori boja | Nije primenljivo (konfiguraciona datoteka) |
| Kanali i struktura | Konfiguraciona svojstva ključ-vrednost grupisana po imenskim prostorima odeljaka |
| Maksimalne dimenzije | Istorijsko ograničenje od 64 KB u 16-bitnom Windowsu; neograničeno u savremenim implementacijama |
| Transparentnost | Nema |
| Strimovanje i progresivno učitavanje | Parser koji obrađuje tok red po red |
Tehnička matrica poređenja: INI u odnosu na konkurente
| Tehnički atribut | INI (Trenutno) | JSON | YAML | TOML |
|---|---|---|---|---|
| Složenost sintakse | Najjednostavnija moguća (odeljak + ključ=vrednost) | Stroge zagrade i navodnici | Razmaci osetljivi na uvlačenje | Savremene tipizirane tabele |
| Podrška za komentare | Izvorna podrška za komentare (; i #) | Nema podrške za komentare u specifikaciji | Izvorna podrška za komentare (#) | Izvorna podrška za komentare (#) |
| Ugnježđene strukture | Samo odeljci sa 1 nivoom | Beskonačni ugnježđeni objekti/nizovi | Beskonačna ugnježđena stabla | Nizovi strukturiranih tabela |
| Tipizacija podataka | Implicitne niske (aplikacija parsira tipove) | Eksplicitni brojevi, logičke vrednosti, nizovi | Eksplicitni tipovi i sidra | Eksplicitni datumi, brojevi, nizovi |
Uobičajeni režimi oštećenja i vodič za heksadecimalni oporavak
Aplikacija ignoriše postavke ili ne uspeva da se pokrene.
Osnovni uzrok: Nedostaje zatvorena zagrada u zaglavlju odeljka (npr. '[Settings' umesto '[Settings]') ili znak jednakosti u vrednosti nije escapeovan.
Oporavak: Potvrdite i popravite INI sintaksu pomoću alata File2File.app Config Formatter.
Bezbednosna analiza i vektori napada parsera
INI parseri moraju da se zaštite od napada ubacivanjem odeljaka i zagađenja prototipa (prototype pollution) prilikom deserijalizacije u objekte.
Poznati vektori napada
- INI injekcija pri kojoj ubacivanje znaka za novi red u korisnički unos stvara neovlašćene konfiguracione odeljke.
- Zagađenje prototipa u JavaScript INI parserima dodelom vrednosti za '__proto__'.
- Uskraćivanje usluge (DoS) usled duboko rekurzivnog proširivanja imena odeljaka.
Najbolje prakse za zaštitu: Sanitizujte korisničke ulaze da biste zabranili znakove za novi red i zaštitili se od zagađenja prototipa (prototype pollution).
Istorijat i prekretnice
Ključne prednosti
- Izuzetno čista, intuitivna sintaksa: tehnički manje obučeni korisnici mogu lako pročitati i izmeniti postavke.
- Izvorni API-ji za parsiranje u skoro svakom programskom jeziku (Python configparser, PHP parse_ini_file, C#).
- Imenski prostori odeljaka sprečavaju preklapanje postavki u različitim funkcijama aplikacije.
Tehnička ograničenja i nedostaci
- Ne postoji formalni međunarodni standard: znakovi za komentare (; i #) i pravila za escapeovanje razlikuju se među parserima.
- Ravna hijerarhija: ne podržava duboko ugnježđene nizove ili složene strukturisane objekte bez prilagođenih separatora.
- Sve vrednosti se čitaju kao niske (stringovi), pa aplikacije moraju ručno da parsiraju cele brojeve, logičke vrednosti i brojeve sa pokretnim zarezom.
Zanimljivosti
- U Windowsu 3.1, svako pojedinačno podešavanje čitavog operativnog sistema bilo je sačuvano u samo dve datoteke: WIN.INI i SYSTEM.INI.
- Git koristi INI format za svoju primarnu konfiguracionu datoteku skladišta koja se nalazi na lokaciji '.git/config'.
- Datoteke prečica na radnoj površini u Linuxu (XDG Desktop Entry '.desktop' datoteke) strukturisane su pomoću standardne INI sintakse.
Često postavljana tehnička pitanja
Čemu služi INI fajl?
INI datoteke koriste desktop softver, igre i razvojni alati (kao što su Git config i PHP.ini) za čuvanje korisničkih podešavanja i konfiguracionih opcija u lako čitljivom formatu.
Kako mogu da izmenim INI fajl?
INI datoteke možete da otvorite i izmenite pomoću bilo kog osnovnog uređivača teksta, kao što su Notepad, TextEdit i VS Code, ili direktno na internetu pomoću File2File.app.
Mogu li da konvertujem INI u JSON ili YAML?
Da. File2File.app može odmah da konvertuje INI datoteke u čist JSON, YAML ili TOML format direktno u vašem pregledaču.