การตั้งค่า INI (.ini)
มาตรฐานการกำหนดค่าที่ใช้กันทั่วไปในอุตสาหกรรม มาตรฐานWindows Initialization Configuration (INI) คือรูปแบบไฟล์กำหนดค่าคลาสสิกที่ Microsoft Windows ทำให้เป็นที่นิยมและอ่านเข้าใจได้ง่าย โดยจัดการตั้งค่าแอปพลิเคชันเป็น [sections] ที่มีชื่อ ซึ่งประกอบด้วยคู่ key=value
แปลง INI เป็น JSON
ตัวแปลงจาก INI เป็น JSON ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ
ตรวจสอบไฟล์และข้อมูลเมตา
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ INI โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็นส่วนหัวระดับไบต์
ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ INI โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:
ลายเซ็น HEX (OFFSET 0):
5B ... 5Dการแสดงผลรูปแบบ ASCII: [...]
มาตรฐาน: มาตรฐานการกำหนดค่าที่ใช้กันทั่วไปในอุตสาหกรรม
ข้อมูลจำเพาะทางเทคนิค
| สถาปัตยกรรมคอนเทนเนอร์ | ไฟล์กำหนดค่าแบบข้อความล้วนที่จัดโครงสร้างด้วยส่วนหัว [section] ซึ่งประกอบด้วยคู่ key = value และความคิดเห็น (; หรือ #) |
| การบีบอัด | ไฟล์ข้อความแบบไม่บีบอัด |
| การจัดลำดับไบต์ | สตรีมข้อความ UTF-8 หรือ ANSI |
| พื้นที่สี | ไม่เกี่ยวข้อง (ไฟล์กำหนดค่า) |
| ช่องสัญญาณและโครงสร้าง | คุณสมบัติกำหนดค่าแบบคีย์-ค่า แบ่งตามเนมสเปซของแต่ละส่วน |
| ขนาดสูงสุด | ในอดีตจำกัดที่ 64 KB บน Windows 16 บิต; การใช้งานสมัยใหม่ไม่จำกัดขนาด |
| ความโปร่งใส | ไม่มี |
| การสตรีมและแบบโปรเกรสซีฟ | ตัวแยกวิเคราะห์สตรีมตามลำดับทีละบรรทัด |
ตารางเปรียบเทียบทางเทคนิค: INI กับคู่แข่ง
| คุณลักษณะทางเทคนิค | INI (ปัจจุบัน) | JSON | YAML | TOML |
|---|---|---|---|---|
| ความซับซ้อนของไวยากรณ์ | ง่ายที่สุดเท่าที่จะเป็นไปได้ (ส่วน + key=val) | วงเล็บและเครื่องหมายคำพูดที่เข้มงวด | ช่องว่างที่ไวต่อการเยื้อง | ตารางที่ระบุชนิดข้อมูลได้แบบสมัยใหม่ |
| การรองรับคอมเมนต์ | รองรับคอมเมนต์ในตัว (; และ #) | สเปกไม่รองรับคอมเมนต์ | รองรับคอมเมนต์ # ในตัว | รองรับคอมเมนต์ # ในตัว |
| โครงสร้างซ้อนกัน | ส่วน 1 ระดับเท่านั้น | ออบเจ็กต์/อาร์เรย์ซ้อนกันไม่จำกัด | โครงสร้างต้นไม้ซ้อนกันได้ไม่จำกัด | อาร์เรย์ตารางที่มีโครงสร้าง |
| การกำหนดประเภทข้อมูล | สตริงโดยปริยาย (แอปวิเคราะห์ประเภท) | ตัวเลข บูลีน อาร์เรย์ที่ชัดเจน | ประเภทและแองเคอร์ที่ชัดเจน | วันที่ ตัวเลข อาร์เรย์ที่ชัดเจน |
รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex
แอปพลิเคชันเพิกเฉยต่อการตั้งค่าหรือไม่สามารถเริ่มต้นได้
สาเหตุหลัก: วงเล็บเหลี่ยมปิดของส่วนหัวหายไป (เช่น '[Settings' แทนที่จะเป็น '[Settings]') หรือมีเครื่องหมายเท่ากับในค่าที่ไม่ได้ escape
การกู้คืน: ตรวจสอบและแก้ไขไวยากรณ์ INI โดยใช้ File2File.app Config Formatter
การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์
ตัวแยกวิเคราะห์ INI ต้องป้องกันการโจมตีด้วยการแทรก section และการปนเปื้อนพร็อตโทไทป์เมื่อแปลงข้อมูลเป็นออบเจ็กต์
เวกเตอร์การโจมตีที่ทราบ
- การแทรก INI: การขึ้นบรรทัดใหม่ในอินพุตของผู้ใช้อาจสร้าง section การตั้งค่าที่ไม่ได้รับอนุญาต
- การปนเปื้อนพร็อตโทไทป์ในตัวแยกวิเคราะห์ INI ของ JavaScript ที่กำหนดค่าให้กับ «__proto__»
- การโจมตีแบบปฏิเสธการให้บริการผ่านการขยายชื่อส่วนแบบเรียกซ้ำที่ซ้อนลึก
แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: ทำความสะอาดอินพุตจากผู้ใช้เพื่อห้ามอักขระขึ้นบรรทัดใหม่ และป้องกันการปนเปื้อนพร็อตโทไทป์
ประวัติความเป็นมาและเหตุการณ์สำคัญ
ข้อได้เปรียบและจุดเด่นสำคัญ
- ไวยากรณ์ที่สะอาดและใช้งานง่ายเป็นพิเศษ: ผู้ใช้ที่ไม่ใช่สายเทคนิคสามารถอ่านและแก้ไขการตั้งค่าได้อย่างง่ายดาย
- API การวิเคราะห์แบบเนทีฟในเกือบทุกภาษาโปรแกรม (Python configparser, PHP parse_ini_file, C#)
- เนมสเปซของ section ช่วยป้องกันไม่ให้ชื่อการตั้งค่าของฟีเจอร์ต่างๆ ในแอปพลิเคชันซ้ำกัน
ข้อจำกัดทางเทคนิคและข้อควรพิจารณา
- ไม่มีมาตรฐานสากลอย่างเป็นทางการ: อักขระสำหรับเขียนคอมเมนต์ (; หรือ #) และกฎการ escape แตกต่างกันไปตามตัวแยกวิเคราะห์
- ลำดับชั้นแบน: ไม่รองรับอาร์เรย์ซ้อนกันลึกหรือออบเจ็กต์ที่มีโครงสร้างซับซ้อนโดยไม่มีตัวคั่นกำหนดเอง
- ค่าทั้งหมดจะถูกอ่านเป็นสตริง แอปพลิเคชันจึงต้องแปลงค่าเป็นจำนวนเต็ม บูลีน และเลขทศนิยมด้วยตนเอง
เกร็ดความรู้ทางเทคนิคที่น่าสนใจ
- ใน Windows 3.1 การตั้งค่าทุกรายการในระบบปฏิบัติการทั้งหมดจะถูกเก็บไว้ในไฟล์เพียงสองไฟล์คือ WIN.INI และ SYSTEM.INI
- Git ใช้รูปแบบ INI สำหรับไฟล์กำหนดค่าที่เก็บข้อมูลหลักที่ตั้งอยู่ที่ '.git/config'
- ไฟล์ทางลัดเดสก์ท็อปบน Linux (ไฟล์ XDG Desktop Entry '.desktop') มีโครงสร้างโดยใช้ไวยากรณ์ INI มาตรฐาน
คำถามทางเทคนิคที่พบบ่อย
ไฟล์ INI ใช้สำหรับทำอะไร?
ซอฟต์แวร์เดสก์ท็อป เกม และเครื่องมือสำหรับนักพัฒนา (เช่น ไฟล์กำหนดค่า Git และ PHP.ini) ใช้ไฟล์ INI เพื่อจัดเก็บค่ากำหนดของผู้ใช้และการตั้งค่าต่างๆ ในรูปแบบที่อ่านง่าย
ฉันจะแก้ไขไฟล์ INI ได้อย่างไร?
คุณสามารถเปิดและแก้ไขไฟล์ INI ด้วยโปรแกรมแก้ไขข้อความพื้นฐานใดก็ได้ เช่น Notepad, TextEdit, VS Code หรือแก้ไขทางออนไลน์ได้โดยตรงด้วย File2File.app
ฉันสามารถแปลง INI เป็น JSON หรือ YAML ได้หรือไม่?
ได้ File2File.app แปลงไฟล์ INI เป็นรูปแบบ JSON, YAML หรือ TOML ที่อ่านง่ายได้ทันทีในเบราว์เซอร์