Параметри INI (.ini)
Де-факто СтандартWindows Initialization Configuration (INI): це класичний зручний для читання формат файлів конфігурації, популяризований Microsoft Windows. Він упорядковує параметри застосунків в іменованих розділах ([sections]) із парами ключ=значення.
Конвертувати з INI у JSON
Безкоштовний конвертер з INI у JSON у браузері. Миттєво конвертуйте файли на своєму пристрої.
Аналіз та метадані
Операційні системи та аналізатори файлів ідентифікують файли INI, перевіряючи початкову послідовність бінарних байтів:
Сигнатура заголовка на байтовому рівні (Magic Bytes)
Операційні системи та аналізатори файлів ідентифікують файли INI, перевіряючи початкову послідовність бінарних байтів:
ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):
5B ... 5DПОДАННЯ В ASCII: [...]
Стандартизація: Де-факто галузевий стандарт конфігурації
Технічні характеристики
| Архітектура контейнера | Звичайний текстовий файл конфігурації, структурований у заголовки [section], що містять пари ключ = значення та коментарі (; або #) |
| Стиснення | Нестиснений текстовий файл |
| Порядок байтів (Endianness) | Текстовий потік UTF-8 або ANSI |
| Колірні простори | Н/Д (Файл конфігурації) |
| Канали та структура | Властивості конфігурації у форматі «ключ: значення», згруповані за просторами імен розділів |
| Максимальні розміри | Історичне обмеження у 64 КБ у 16-бітній Windows; відсутнє в сучасних реалізаціях |
| Прозорість | Відсутня |
| Потокове та прогресивне завантаження | Послідовний построковий потоковий парсер |
Технічна матриця порівняння: INI проти конкурентів
| Технічний атрибут | INI (Поточний) | JSON | YAML | TOML |
|---|---|---|---|---|
| Складність синтаксису | Найпростіший можливий (розділ + ключ=значення) | Суворі дужки та лапки | Чутливі до відступів пробіли | Сучасні типізовані таблиці |
| Підтримка коментарів | Вбудована підтримка коментарів (; та #) | Коментарі не підтримуються в специфікації | Вбудована підтримка коментарів (#) | Вбудована підтримка коментарів (#) |
| Вкладені структури | Лише 1-рівневі розділи | Нескінченно вкладені об'єкти/масиви | Нескінченно вкладені дерева | Структуровані масиви таблиць |
| Типізація даних | Неявні рядки (застосунок визначає типи) | Явні числа, логічні значення, масиви | Явні типи та прив'язки | Явні дати, числа, масиви |
Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі
Застосунок ігнорує налаштування або не запускається.
Першопричина: Відсутня дужка заголовка розділу (наприклад, '[Settings' замість '[Settings]') або неекранований знак рівності у значенні.
Відновлення: Перевірте та виправте синтаксис INI за допомогою форматувальника конфігурацій File2File.app.
Аналіз безпеки та векторів атак на парсери
Засоби розбору INI мають захищати від атак із впровадженням розділів та забруднення прототипів під час десеріалізації в об’єкти.
Відомі вектори атак
- Впровадження INI, де вставка нового рядка у введених користувачем даних створює несанкціоновані розділи конфігурації.
- Забруднення прототипу (prototype pollution) у засобах розбору INI для JavaScript під час присвоєння значення властивості '__proto__'.
- Відмова в обслуговуванні за допомогою глибоко рекурсивного розширення назв розділів.
Рекомендації щодо захисту: Очищуйте введені користувачами дані, щоб заборонити символи нового рядка й захиститися від забруднення прототипу (prototype pollution).
Історичне походження та віхи
Основні переваги
- Винятково чистий, інтуїтивно зрозумілий синтаксис: нетехнічні користувачі можуть легко читати та змінювати налаштування.
- Вбудовані API для розбору є майже в кожній мові програмування (configparser у Python, parse_ini_file у PHP, C#).
- Простори імен розділів запобігають колізіям налаштувань у різних функціях додатків.
Технічні обмеження та недоліки
- Відсутній офіційний міжнародний стандарт: символи коментарів (; проти #) та правила екранування відрізняються в різних парсерах.
- Плоска ієрархія: не підтримує глибоко вкладені масиви або складні структуровані об'єкти без спеціальних роздільників.
- Усі значення зчитуються як рядки, тому застосункам потрібно самостійно розбирати цілі числа, логічні значення та числа з рухомою комою.
Цікаві технічні факти
- У Windows 3.1 кожне окреме налаштування всієї операційної системи зберігалося лише у двох файлах: WIN.INI та SYSTEM.INI.
- Git використовує формат INI для свого основного файлу конфігурації репозиторію, розташованого за адресою '.git/config'.
- Файли ярликів робочого столу на Linux (файли '.desktop' XDG Desktop Entry) структуровані за допомогою стандартного синтаксису INI.
Поширені технічні запитання
Для чого використовується файл INI?
Файли INI використовуються настільним програмним забезпеченням, іграми та інструментами розробників (як-от конфігурація Git та PHP.ini) для зберігання вподобань користувача та налаштувань конфігурації у зручному для читання форматі.
Як я можу редагувати файл INI?
Ви можете відкривати та редагувати файли INI за допомогою будь-якого базового текстового редактора, такого як Notepad, TextEdit, VS Code або прямо онлайн за допомогою File2File.app.
Чи можу я конвертувати INI у JSON або YAML?
Так. File2File.app може миттєво конвертувати файли INI у формати JSON, YAML або TOML прямо у вашому браузері.