Ustawienia INI (.ini)
De StandardWindows Initialization Configuration (INI) to klasyczny, czytelny dla człowieka format plików konfiguracyjnych spopularyzowany przez system Microsoft Windows, organizujący ustawienia aplikacji w nazwane [sections] 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 tekstowy plik konfiguracyjny uporządkowany według nagłówków [section], zawierający 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 w postaci par klucz-wartość, pogrupowane 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=wartość) | Obowiązkowe nawiasy i cudzysłowy | Białe znaki wrażliwe na wcięcia | Nowoczesne tabele o określonych typach |
| Obsługa komentarzy | Natywna obsługa komentarzy (; i #) | Brak obsługi komentarzy w specyfikacji | Natywna obsługa komentarzy (#) | Natywna obsługa komentarzy (#) |
| Zagnieżdżone struktury | Tylko sekcje jednopoziomowe | Dowolnie głęboko zagnieżdżone obiekty i tablice | Dowolnie głęboko zagnieżdżone drzewa | Tablice tabel o określonej strukturze |
| Typowanie danych | Wartości są domyślnie ciągami znaków (aplikacja rozpoznaje 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 zamykającego nagłówek sekcji (np. '[Settings' zamiast '[Settings]') lub znak równości w wartości niepoprzedzony znakiem ucieczki.
Odzyskiwanie: Zweryfikuj i napraw składnię pliku INI za pomocą narzędzia File2File.app 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 (; lub #) i reguły zapisu znaków specjalnych różnią się w zależności od parsera.
- 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 pulpitu w systemie Linux (pliki XDG Desktop Entry z rozszerzeniem „.desktop”) mają standardową składnię INI.
Często zadawane pytania techniczne
Do czego używany jest plik INI?
Pliki INI służą do przechowywania preferencji użytkownika i ustawień przez programy komputerowe, gry oraz narzędzia programistyczne (takie jak konfiguracja Gita i plik PHP.ini). Zapisane w nich dane są łatwe do odczytania.
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.