הגדרות INI (.ini)
De תקןWindows Initialization Configuration (INI) הוא פורמט קובץ ההגדרה הקלאסי הקריא לאדם שפופולריזציה בוצעה על ידי Microsoft Windows, המארגן הגדרות יישום לתוך [קטעים] בעלי שמות המכילים צמדי מפתח=ערך.
המר INI ל-JSON
ממיר חינמי מ-INI ל-JSON פועל בדפדפן. המר קבצים באופן מיידי במכשיר שלך.
בדיקה ומטא-דאטה
מערכות הפעלה ומנתחי קבצים מזהים קבצי INI על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי INI על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
5B ... 5Dייצוג ASCII: [...]
תקינה: De facto industry configuration standard
מפרט טכני
| ארכיטקטורת מעטפת | Plaintext configuration file structured into [section] headers containing key = value pairs and comments (; or #) |
| דחיסה | Uncompressed text file |
| סדר בתים (Endianness) | UTF-8 or ANSI text stream |
| מרחבי צבע | N/A (Configuration File) |
| ערוצים ומבנה | Key-value configuration properties categorized by section namespaces |
| ממדים מרביים | Historical 64 KB limit in 16-bit Windows; unlimited in modern implementations |
| שקיפות | None |
| הזרמה ופרוגרסיביות | Sequential line-by-line streaming parser |
מטריצת השוואה טכנית: INI מול מתחרים
| תכונה טכנית | INI (נוכחי) | JSON | YAML | TOML |
|---|---|---|---|---|
| מורכבות תחביר | הפשוט ביותר האפשרי (סעיף + key=val) | סוגריים ומרכאות קפדניים | רווחים רגישים להזחה | טבלאות מוקלדות מודרניות |
| תמיכה בהערות | מקומי (הערות ; ו-#) | אין תמיכה בהערות במפרט | מקומי (הערות #) | מקומי (הערות #) |
| מבנים מקוננים | קטעים של רמה 1 בלבד | אובייקטים/מערכים מקוננים אינסופיים | עצים מקוננים אינסופיים | מערכי טבלאות מובנים |
| סוגי נתונים (Data Typing) | מחרוזות משתמעות (היישום מנתח סוגים) | מספרים מפורשים, בוליאנים, מערכים | סוגים מפורשים ועוגנים | תאריכים מפורשים, מספרים, מערכים |
מצבי שיחשות נפוצים ומדריך שחזור הקסדצימלי (Hex)
היישום מתעלם מהגדרות או נכשל בהפעלה.
גורם שורש: חסר סוגר כותרת של סעיף (למשל '[Settings' במקום '[Settings]') או סימן שווה לא מנוקה בערך.
התאוששות: אמת ותקן את תחביר ה-INI באמצעות מעצב התצורה של File2File.
ניתוח אבטחה ווקטורי התקפה על מנתחים (Parsers)
על מנתחי INI להגן מפני התקפות הזרקת סעיפים והרעלת אבות טיפוס (Prototype pollution) בעת פענוח אובייקטים.
ווקטורי תקיפה ידועים
- הזרקת INI שבה הוספת שורה חדשה בקלט המשתמש יוצרת מקטעי תצורה בלתי מורשים.
- הרעלת אבות טיפוס במנתחי INI מבוססי JavaScript המקצים ערכים ל-'__proto__'.
- מניעת שירות (DoS) באמצעות הרחבת שמות סעיפים רкурסיבית עמוקה.
השיטות המומלצות להגנה:
היסטוריה ואבני דרך
יתרונות מרכזיים
- תחביר נקי ואינטואיטיבי במיוחד: משתמשים שאינם טכניים יכולים לקרוא ולשנות הגדרות בקלות.
- ממשקי API מקוריים לניתוח כמעט בכל שפת תכנות (configparser בפייתון, parse_ini_file ב-PHP, C#).
- מרחבי שמות של מקטעים מונעים התנגשויות בהגדרות בין תכונות יישום שונות.
מגבלות טכניות וחסרונות
- אין תקן בינלאומי רשמי: תווי הערה (; לעומת #) וכללי בריחה (escaping) מששתנים בין מנתחים שונים (Parsers).
- היררכיה שטוחה: אינו תומך במערכים מקוננים עמוק או באובייקטים מובנים מורכבים ללא מפרידים מותאמים אישית.
- כל הערכים נקראים כמחרוזות, מה שמחייב יישומים לנתח ידנית מספרים שלמים (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 באופן מיידי בדפדפן שלך.