INI 설정 (.ini)
De 표준INI(Windows Initialization Configuration)는 마이크로소프트 윈도우에서 대중화된 고전적이고 읽기 쉬운 설정 파일 포맷으로, 애플리케이션 설정을 key=value 쌍을 포함하는 명명된 [섹션]으로 구성합니다.
INI을(를) JSON(으)로 변환
무료 브라우저 내 INI-JSON 변환기. 기기에서 파일을 즉시 변환하세요.
검사 및 메타데이터
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 INI 파일을 식별합니다:
바이트 단위 헤더 시그니처 (매직 바이트)
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 INI 파일을 식별합니다:
16진수 시그니처 (오프셋 0):
5B ... 5DASCII 표현: [...]
표준화: De facto industry configuration standard
기술 사양
| 컨테이너 아키텍처 | Plaintext configuration file structured into [section] headers containing key = value pairs and comments (; or #) |
| 압축 | Uncompressed text file |
| 바이트 엔디안 | 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레벨 섹션만 지원 | 무제한 중첩 객체/배열 | 무제한 중첩 트리 | 구조화된 테이블 배열 |
| 데이터 타이핑 | 암시적 문자열 (앱이 타입 파싱) | 명시적 숫자, 부울, 배열 | 명시적 타입 및 앵커 | 명시적 날짜, 숫자, 배열 |
일반적인 손상 모드 및 헥스 복구 가이드
애플리케이션이 설정을 무시하거나 실행에 실패함.
근본 원인: 누락된 섹션 헤더 대괄호 (예: '[Settings]' 대신 '[Settings') 또는 값 내부의 이스케이프되지 않은 등호.
복구: File2File 설정 포맷터를 사용하여 INI 구문을 검증하고 수정합니다.
보안 분석 및 파서 공격 벡터
INI 파서는 객체로 역직렬화할 때 섹션 주입 공격과 프로토타입 오염에 대비해야 합니다.
알려진 공격 벡터
- 사용자 입력값에 줄바꿈이 삽입되어 권한 없는 설정 섹션이 생성되는 INI 주입 공격.
- JavaScript INI 파서에서 '__proto__'에 할당하는 프로토타입 오염.
- 깊이 재귀적인 섹션 이름 확장을 통한 서비스 거부(DoS) 공격.
방어적 모범 사례:
역사적 배경 및 주요 이력
주요 장점
- 유례없이 깔끔하고 직관적인 구문: 비전문가 사용자도 쉽게 설정을 읽고 수정할 수 있습니다.
- 거의 모든 프로그래밍 언어에서 기본 제공하는 파싱 API (파이썬 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 형식으로 즉시 변환할 수 있습니다.