INI 설정 (.ini)
업계에서 표준Windows Initialization Configuration(INI)은 Microsoft Windows에서 널리 쓰이게 된 고전적인 가독성 높은 구성 파일 형식입니다. 애플리케이션 설정을 key=value 쌍이 들어 있는 이름 있는 [section]으로 구성합니다.
INI을(를) JSON(으)로 변환
무료 브라우저 내 INI에서 JSON로 변환하는 도구입니다. 기기에서 파일을 즉시 변환할 수 있습니다.
검사 및 메타데이터
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 INI 파일을 식별합니다:
바이트 단위 헤더 시그니처 (매직 바이트)
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 INI 파일을 식별합니다:
16진수 시그니처 (오프셋 0):
5B ... 5DASCII 표현: [...]
표준화: 업계에서 사실상의 구성 파일 표준
기술 사양
| 컨테이너 아키텍처 | [section] 헤더 아래에 키=값 쌍과 주석(; 또는 #)을 배치하는 일반 텍스트 구성 파일 |
| 압축 | 압축되지 않은 텍스트 파일 |
| 바이트 엔디안 | UTF-8 또는 ANSI 텍스트 스트림 |
| 색 공간 | 해당 없음(구성 파일) |
| 채널 및 구조 | 섹션 네임스페이스별로 분류된 키-값 구성 속성 |
| 최대 크기 | 16비트 Windows에서는 과거 64KB 제한이 있었으며 최신 구현에는 크기 제한이 없음 |
| 투명도 | 없음 |
| 스트리밍 및 프로그레시브 | 한 줄씩 순차적으로 읽는 스트리밍 파서 |
기술 비교 매트릭스: INI 대 경쟁사
| 기술적 속성 | INI (현재) | JSON | YAML | TOML |
|---|---|---|---|---|
| 구문 복잡성 | 가장 단순함 (섹션 + key=val) | 엄격한 대괄호 및 따옴표 | 들여쓰기에 민감한 공백 | 최신 데이터 형식을 갖춘 테이블 |
| 주석 지원 | 기본 지원 (; 및 # 주석) | 사양서에 주석 미지원 | 기본 지원 (# 주석) | 기본 지원 (# 주석) |
| 중첩 구조 | 1레벨 섹션만 지원 | 무제한 중첩 객체/배열 | 무제한 중첩 트리 | 구조화된 테이블 배열 |
| 데이터 유형 | 암시적 문자열 (앱이 유형을 파싱) | 명시적 숫자, 부울, 배열 | 명시적 타입 및 앵커 | 명시적 날짜, 숫자, 배열 |
일반적인 손상 모드 및 헥스 복구 가이드
애플리케이션이 설정을 무시하거나 실행에 실패함.
근본 원인: 섹션 헤더의 여는 대괄호 누락 (예: '[Settings' 대신 '[Settings]') 또는 값 내부의 이스케이프되지 않은 등호.
복구: File2File.app Config Formatter로 INI 구문을 검증하고 수정하십시오.
보안 분석 및 파서 공격 벡터
INI 파서는 객체로 역직렬화할 때 섹션 주입 공격과 프로토타입 오염에 대비해야 합니다.
알려진 공격 벡터
- 사용자 입력값에 줄바꿈이 삽입되어 권한 없는 설정 섹션이 생성되는 INI 주입 공격.
- JavaScript INI 파서에서 '__proto__'에 할당하는 프로토타입 오염.
- 깊이 재귀적인 섹션 이름 확장을 통한 서비스 거부(DoS) 공격.
방어적 모범 사례: 사용자 입력을 정제해 줄바꿈 문자를 금지하고 프로토타입 오염을 방지하십시오.
역사적 배경 및 주요 이력
주요 장점
- 매우 깔끔하고 직관적인 구문: 비전문가 사용자도 쉽게 설정을 읽고 수정할 수 있습니다.
- 거의 모든 프로그래밍 언어에서 기본 파싱 API를 제공합니다(Python configparser, PHP parse_ini_file, C# 등).
- 섹션 네임스페이스를 통해 서로 다른 애플리케이션 기능 간의 설정 충돌을 방지합니다.
기술적 제한 사항 및 단점
- 공식적인 국제 표준 부재: 주석 문자(; 대 #) 및 이스케이프 규칙이 파서마다 다릅니다.
- 평면적 계층 구조: 사용자 정의 구분자 없이는 깊이 중첩된 배열이나 복잡한 구조화된 객체를 지원하지 않습니다.
- 모든 값이 문자열로 읽히므로 애플리케이션에서 정수, 부울, 부동 소수점을 수동으로 파싱해야 합니다.
흥미로운 기술적 상식
- 윈도우 3.1 시절에는 운영체제 전체의 모든 단일 설정이 단 두 개의 파일(WIN.INI와 SYSTEM.INI)에만 저장되었습니다.
- Git은 '.git/config'에 위치한 기본 리포지토리 설정 파일로 INI 포맷을 사용합니다.
- 리눅스의 데스크탑 단축키 파일(XDG Desktop Entry '.desktop' 파일)은 표준 INI 구문을 사용하여 구조화되어 있습니다.
자주 묻는 기술 질문
INI 파일은 어디에 사용됩니까?
INI 파일은 데스크톱 소프트웨어, 게임, 개발자 도구(Git 설정 및 PHP.ini 등)에서 사용자 기본 설정 및 구성 설정을 읽기 쉬운 형식으로 저장하는 데 사용됩니다.
INI 파일을 어떻게 편집할 수 있습니까?
Notepad, TextEdit, VS Code 같은 기본 텍스트 편집기나 File2File.app을 사용해 온라인에서 INI 파일을 바로 열고 편집할 수 있습니다.
INI를 JSON 또는 YAML로 변환할 수 있습니까?
예. File2File.app을 사용하면 브라우저에서 INI 파일을 JSON, YAML 또는 TOML 형식으로 바로 변환할 수 있습니다.