הגדרות INI (.ini)
תקן תקןWindows Initialization Configuration (INI) הוא פורמט קובץ תצורה קריא לאדם, שהתפרסם בזכות Microsoft Windows ומארגן הגדרות יישום במקטעים בעלי שמות שמכילים צמדי מפתח=ערך.
המר INI ל-JSON
ממיר חינמי מ-INI ל-JSON פועל בדפדפן. המר קבצים באופן מיידי במכשיר שלך.
בדיקה ומטא-נתונים
מערכות הפעלה ומנתחי קבצים מזהים קבצי INI על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי INI על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
5B ... 5Dייצוג ASCII: [...]
תקינה: תקן תצורה בפועל בתעשייה
מפרט טכני
| מבנה המכולה | קובץ תצורה בטקסט פשוט, הבנוי מכותרות [section] שמכילות צמדי key = value והערות (; או #) |
| דחיסה | קובץ טקסט לא דחוס |
| סדר בתים (Endianness) | זרם טקסט UTF-8 או ANSI |
| מרחבי צבע | לא רלוונטי (קובץ תצורה) |
| ערוצים ומבנה | מאפייני תצורה מסוג מפתח-ערך, המסודרים לפי שמות מקטעים |
| ממדים מרביים | מגבלה היסטורית של 64 KB ב-Windows של 16 סיביות; ללא מגבלה במימושים מודרניים |
| שקיפות | אין |
| הזרמה ופרוגרסיביות | מנתח סדרתי הקורא שורה אחר שורה |
מטריצת השוואה טכנית: INI מול מתחרים
| תכונה טכנית | INI (נוכחי) | JSON | YAML | TOML |
|---|---|---|---|---|
| מורכבות תחביר | פשוט ככל האפשר (מקטע + key=val) | סוגריים ומרכאות קפדניים | רווחים רגישים להזחה | טבלאות מוקלדות מודרניות |
| תמיכה בהערות | תמיכה מובנית (הערות ; ו-#) | אין תמיכה בהערות במפרט | מקומי (הערות #) | מקומי (הערות #) |
| מבנים מקוננים | מקטעים ברמה אחת בלבד | אובייקטים/מערכים מקוננים אינסופיים | עצים מקוננים אינסופיים | מערכי טבלאות מובנים |
| סוגי נתונים (Data Typing) | מחרוזות משתמעות (היישום מנתח את הסוגים) | מספרים מפורשים, בוליאנים, מערכים | סוגים מפורשים ועוגנים | תאריכים, מספרים ומערכים מפורשים |
מצבי השחתה נפוצים ומדריך שחזור הקסדצימלי (Hex)
היישום מתעלם מההגדרות או אינו מצליח להפעיל.
גורם שורש: חסר סוגר בכותרת מקטע (למשל [Settings במקום [Settings]) או סימן שווה בערך שלא עבר escaping.
שחזור: בדוק ותקן את תחביר INI באמצעות File2File.app Config Formatter.
ניתוח אבטחה ווקטורי תקיפה נגד מנתחי פורמטים (parsers)
מנתחי INI צריכים להגן מפני הזרקת מקטעים ומפני הרעלת אב-טיפוס בעת המרת הנתונים לאובייקטים.
ווקטורי תקיפה ידועים
- הזרקת INI שבה הוספת שורה חדשה לקלט משתמש יוצרת מקטעי תצורה לא מורשים.
- הרעלת אב-טיפוס במנתחי INI מבוססי JavaScript, המקצים ערכים למאפיין __proto__.
- מניעת שירות באמצעות הרחבה רקורסיבית לעומק של שמות מקטעים.
שיטות מומלצות להגנה: נקה קלט משתמש כדי למנוע הזרקת שורות חדשות, והגן מפני הרעלת אב-טיפוס.
היסטוריה ואבני דרך
יתרונות מרכזיים
- תחביר נקי ואינטואיטיבי במיוחד: משתמשים שאינם טכניים יכולים לקרוא ולשנות הגדרות בקלות.
- ממשקי API לניתוח זמינים כמעט בכל שפת תכנות (configparser ב-Python, parse_ini_file ב-PHP ו-C#).
- מרחבי שמות של מקטעים מונעים התנגשויות בהגדרות בין תכונות יישום שונות.
מגבלות טכניות וחסרונות
- אין תקן בינלאומי רשמי: תווי ההערה (; או #) וכללי הבריחה משתנים בין מנתחים.
- היררכיה שטוחה: אינו תומך במערכים מקוננים עמוק או באובייקטים מובנים מורכבים ללא מפרידים מותאמים אישית.
- כל הערכים נקראים כמחרוזות, מה שמחייב יישומים לנתח ידנית מספרים שלמים (integers), בוליאנים ונקודה צפה.
עובדות טכניות מעניינות
- ב-Windows 3.1, ההגדרות של מערכת ההפעלה נשמרו בשני קבצים בלבד: WIN.INI ו-SYSTEM.INI.
- Git משתמש בפורמט INI עבור קובץ התצורה הראשי של המאגר הממוקם ב-'.git/config'.
- קובצי קיצורי דרך שולחניים בלינוקס (קובצי '.desktop' של XDG Desktop Entry) בנויים באמצעות תחביר INI סטנדרטי.
שאלות טכניות נפוצות
למה משמש קובץ INI?
קובצי INI משמשים תוכנות שולחניות, משחקים וכלי פיתוח (כגון Git config ו-PHP.ini) לשמירת העדפות משתמש והגדרות תצורה בפורמט קריא ופשוט.
איך אפשר לערוך קובץ INI?
אפשר לפתוח ולערוך קובצי INI בכל עורך טקסט בסיסי, כגון Notepad, TextEdit או VS Code, או ישירות באינטרנט באמצעות File2File.app.
האם אפשר להמיר INI ל-JSON או ל-YAML?
כן. File2File.app יכול להמיר קובצי INI ל-JSON, ל-YAML או ל-TOML ישירות בדפדפן.