Ustawienia INI (.ini)
De StandardowyWindows Initialization Configuration (INI) to klasyczny, czytelny dla człowieka format plików konfiguracyjnych spopularyzowany przez system Microsoft Windows, organizujący ustawienia aplikacji w nazwane [sekcje] zawierające pary klucz=wartość.
Konwertuj INI na JSON
Darmowy konwerter z INI na JSON w przeglądarce. Konwertuj pliki natychmiast na swoim urządzeniu.
Inspekcja i metadane
Systemy operacyjne i analizatory plików identyfikują pliki INI, sprawdzając początkową sekwencję bajtów binarnych:
Podpis nagłówka na poziomie bajtów (Magic Bytes)
Systemy operacyjne i analizatory plików identyfikują pliki INI, sprawdzając początkową sekwencję bajtów binarnych:
PODPIS HEX (OFFSET 0):
5B ... 5DREPREZENTACJA ASCII: [...]
Normalizacja: De facto industry configuration standard
Specyfikacja techniczna
| Architektura kontenera | Zwykły plik konfiguracyjny ustrukturyzowany w nagłówki [sekcji] zawierające pary klucz = wartość oraz komentarze (; lub #) |
| Kompresja | Nieskompresowany plik tekstowy |
| Kolejność bajtów (Endianness) | Strumień tekstowy UTF-8 lub ANSI |
| Przestrzenie kolorów | Nie dotyczy (plik konfiguracyjny) |
| Kanały i struktura | Właściwości konfiguracyjne typu klucz-wartość podzielone na kategorie według przestrzeni nazw sekcji |
| Maks. wymiary | Historyczny limit 64 KB w 16-bitowym systemie Windows; brak limitów w nowoczesnych implementacjach |
| Przezroczystość | Brak |
| Streaming i progresywne ładowanie | Sekwencyjny parser strumieniowy wiersz po wierszu |
Techniczna macierz porównawcza: INI a konkurencja
| Atrybut techniczny | INI (Bieżący) | JSON | YAML | TOML |
|---|---|---|---|---|
| Złożoność składni | Najprostsza możliwa (sekcja + klucz=wart) | Ścisłe nawiasy i cudzysłowy | Białe znaki wrażliwe na wcięcia | Nowoczesne typowane tabele |
| Obsługa komentarzy | Natywna (komentarze ; oraz #) | Brak obsługi komentarzy w specyfikacji | Natywna (komentarze #) | Natywna (komentarze #) |
| Zagnieżdżone struktury | Tylko 1-poziomowe sekcje | Nieskończenie zagnieżdżone obiekty/tablice | Nieskończenie zagnieżdżone drzewa | Strukturalne tablice tabel |
| Typowanie danych | Niejawne ciągi znaków (aplikacja parsuje typy) | Jawne liczby, wartości logiczne, tablice | Jawne typy i kotwice | Jawne daty, liczby, tablice |
Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego
Aplikacja ignoruje ustawienia lub nie uruchamia się.
Główna przyczyna: Brak nawiasu nagłówka sekcji (np. '[Settings' zamiast '[Settings]') lub niezescapowany znak równości w wartości.
Odzyskiwanie: Zweryfikuj i napraw składnię pliku INI za pomocą narzędzia File2File Config Formatter.
Analiza bezpieczeństwa i wektory ataku na parser
Parsery plików INI muszą chronić przed atakami iniekcji sekcji oraz zanieczyszczeniem prototypu (prototype pollution) podczas deserializacji do obiektów.
Znane wektory ataku
- Iniekcja INI, w której wstawienie nowego wiersza w danych wejściowych użytkownika tworzy nieautoryzowane sekcje konfiguracyjne.
- Zanieczyszczenie prototypu w parserach INI języka JavaScript przypisujące wartości do '__proto__'.
- Odmowa usługi (DoS) poprzez głęboko rekurencyjne rozwijanie nazw sekcji.
Najlepsze praktyki obronne: Oczyszczaj dane wprowadzane przez użytkownika, aby zabronić używania znaków nowej linii i chronić przed zanieczyszczeniem prototypu.
Pochodzenie historyczne i kamienie milowe
Główne zalety
- Wyjątkowo przejrzysta, intuicyjna składnia: użytkownicy nietechniczni mogą łatwo odczytywać i modyfikować ustawienia.
- Natywne interfejsy API parsowania w niemal każdym języku programowania (Python configparser, PHP parse_ini_file, C#).
- Przestrzenie nazw sekcji zapobiegają kolizjom ustawień pomiędzy różnymi funkcjami aplikacji.
Ograniczenia techniczne i wady
- Brak formalnego standardu międzynarodowego: znaki komentarza (; vs #) i reguły ucieczki (escaping) różnią się w zależności od parserów.
- Płaska hierarchia: nie obsługuje głęboko zagnieżdżonych tablic lub złożonych obiektów strukturalnych bez niestandardowych separatorów.
- Wszystkie wartości są odczytywane jako ciągi znaków, co wymaga od aplikacji ręcznego parsowania liczb całkowitych, wartości logicznych i zmiennoprzecinkowych.
Ciekawe informacje techniczne
- W systemie Windows 3.1 każde pojedyncze ustawienie w całym systemie operacyjnym było przechowywane w zaledwie dwóch plikach: WIN.INI oraz SYSTEM.INI.
- Git używa formatu INI dla swojego głównego pliku konfiguracyjnego repozytorium znajdującego się w lokalizacji '.git/config'.
- Pliki skrótów pulpitów w systemie Linux (pliki XDG Desktop Entry '.desktop') są ustrukturyzowane przy użyciu standardowej składni INI.
Często zadawane pytania techniczne
Do czego używany jest plik INI?
Pliki INI są używane przez oprogramowanie komputerowe, gry i narzędzia programistyczne (takie jak konfiguracja Gita i plik PHP.ini) do przechowywania preferencji użytkownika i ustawień konfiguracji w łatwo czytelnym formacie.
Jak mogę edytować plik INI?
Możesz otwierać i edytować pliki INI za pomocą dowolnego podstawowego edytora tekstu, takiego jak Notatnik, TextEdit, VS Code, lub bezpośrednio online za pomocą File2File.app.
Czy mogę przekonwertować plik INI do formatu JSON lub YAML?
Tak. File2File.app pozwala błyskawicznie przekonwertować pliki INI do czystego formatu JSON, YAML lub TOML bezpośrednio w przeglądarce.