การตั้งค่า INI (.ini)
De มาตรฐานWindows Initialization Configuration (INI) คือรูปแบบไฟล์กำหนดค่าที่มนุษย์อ่านได้คลาสสิกซึ่งทำให้เป็นที่นิยมโดย Microsoft Windows โดยจัดระเบียบการตั้งค่าแอปพลิเคชันเป็น [sections] ที่มีชื่อซึ่งประกอบด้วยคู่ key=value
แปลง INI เป็น JSON
ตัวแปลงจาก INI เป็น JSON ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ
ตรวจสอบและดู Metadata
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ INI โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวในระดับไบต์ (Magic Bytes)
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ INI โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 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 |
| การจัดลำดับไบต์ (Byte 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 ระดับเท่านั้น | ออบเจ็กต์/อาร์เรย์ซ้อนกันไม่จำกัด | ต้นไม้ซ้อนกันไม่จำกัด | อาร์เรย์ตารางที่มีโครงสร้าง |
| การกำหนดประเภทข้อมูล | สตริงโดยปริยาย (แอปวิเคราะห์ประเภท) | ตัวเลข บูลีน อาร์เรย์ที่ชัดเจน | ประเภทและแองเคอร์ที่ชัดเจน | วันที่ ตัวเลข อาร์เรย์ที่ชัดเจน |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
แอปพลิเคชันเพิกเฉยต่อการตั้งค่าหรือไม่สามารถเริ่มต้นได้
สาเหตุหลัก: วงเล็บส่วนหัวขาดหายไป (เช่น '[Settings' แทนที่จะเป็น '[Settings]') หรือเครื่องหมายเท่ากับที่ไม่ได้รับการหลบหนีในค่า
การกู้คืน: ตรวจสอบและแก้ไขไวยากรณ์ INI โดยใช้ File2File Config Formatter
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ตัววิเคราะห์ INI จะต้องป้องกันการโจมตีการฉีดส่วน (section injection) และมลพิษของต้นแบบ (prototype pollution) เมื่อแปลงสภาพซีเรียลไลซ์เป็นออบเจ็กต์
เวกเตอร์การโจมตีที่ทราบ
- การฉีด INI ซึ่งการแทรกบรรทัดใหม่ในอินพุตของผู้ใช้จะสร้างส่วนการกำหนดค่าที่ไม่ได้รับอนุญาต
- มลพิษของต้นแบบในตัววิเคราะห์ JavaScript INI ที่กำหนดให้กับ '__proto__'
- การปฏิเสธการให้บริการผ่านการขยายชื่อส่วนแบบเรียกซ้ำอย่างลึกซึ้ง
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน:
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- ไวยากรณ์ที่สะอาดและใช้งานง่ายเป็นพิเศษ: ผู้ใช้ที่ไม่ใช่สายเทคนิคสามารถอ่านและแก้ไขการตั้งค่าได้อย่างง่ายดาย
- API การวิเคราะห์แบบเนทีฟในเกือบทุกภาษาโปรแกรม (Python configparser, PHP parse_ini_file, C#)
- เนมสเปซส่วน (Section) ป้องกันการชนกันของการตั้งค่าข้ามฟีเจอร์แอปพลิเคชันต่างๆ
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ไม่มีมาตรฐานสากลที่เป็นทางการ: อักขระความคิดเห็น (; กับ #) และกฎการหลบหนีจะแตกต่างกันไปในแต่ละตัววิเคราะห์
- ลำดับชั้นแบน: ไม่รองรับอาร์เรย์ซ้อนกันลึกหรือออบเจ็กต์ที่มีโครงสร้างซับซ้อนโดยไม่มีตัวคั่นกำหนดเอง
- ค่าทั้งหมดจะถูกอ่านเป็นสตริง ซึ่งกำหนดให้แอปพลิเคชันต้องแยกวิเคราะห์จำนวนเต็ม บูลีน และทศนิยมด้วยตนเอง
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- ใน Windows 3.1 การตั้งค่าทุกรายการในระบบปฏิบัติการทั้งหมดจะถูกเก็บไว้ในไฟล์เพียงสองไฟล์คือ WIN.INI และ SYSTEM.INI
- Git ใช้รูปแบบ INI สำหรับไฟล์กำหนดค่าที่เก็บข้อมูลหลักที่ตั้งอยู่ที่ '.git/config'
- ไฟล์ทางลัดเดสก์ท็อปบน Linux (ไฟล์ XDG Desktop Entry '.desktop') มีโครงสร้างโดยใช้ไวยากรณ์ INI มาตรฐาน
คำถามทางเทคนิคที่พบบ่อย
ไฟล์ INI ใช้สำหรับทำอะไร?
ไฟล์ INI ถูกใช้โดยซอฟต์แวร์เดสก์ท็อป, เกม และเครื่องมือสำหรับนักพัฒนา (เช่น การตั้งค่า Git และ PHP.ini) เพื่อจัดเก็บค่ากำหนดของผู้ใช้และการตั้งค่ากำหนดค่าในรูปแบบที่อ่านง่าย
ฉันจะแก้ไขไฟล์ INI ได้อย่างไร?
คุณสามารถเปิดและแก้ไขไฟล์ INI ด้วยโปรแกรมแก้ไขข้อความพื้นฐานใดก็ได้ เช่น Notepad, TextEdit, VS Code หรือแก้ไขทางออนไลน์ได้โดยตรงด้วย File2File.app
ฉันสามารถแปลง INI เป็น JSON หรือ YAML ได้หรือไม่?
ได้ File2File.app สามารถแปลงไฟล์ INI เป็นรูปแบบ JSON, YAML หรือ TOML ที่สะอาดตาได้ทันทีในเบราว์เซอร์ของคุณ