피드로 돌아가기
Dev.toFrontend
원문 읽기
Dynamic Import 기반 Fallback 체인으로 Bundle 크기 유지하며 HEIC 파싱 오류 해결
Rescuing EXIF GPS from iPhone 17 HEIC, in a browser-only app
AI 요약
Context
iPhone 17의 HEIC 파일 내 ftyp box 크기가 52bytes로 증가하며 기존 exifr 라이브러리의 50bytes 하드코딩 제한에 걸려 GPS 정보 추출 실패 발생. 모든 사용자를 위해 무거운 라이브러리로 교체할 경우 번들 크기가 약 5배 증가하는 트레이드오프 상황 직면.
Technical Solution
- exifr를 기본 파서로 유지하고 실패 시에만 ExifReader를 호출하는 Fallback Chain 구조 설계
- Dynamic Import를 활용하여 ExifReader를 별도 34 KB gzip 청크로 분리하고 필요한 순간에만 로드하는 Lazy Loading 구현
- (0, 0) 좌표의 Null Island Rejection 로직을 통해 파서 오류로 인한 잘못된 위치 데이터 유입 차단
- Regex Anchor 적용 및 MAX_PHOTO_BYTES(10MB) 제한을 통한 비정상 데이터 및 OOM(Out of Memory) 위험 방어
- BMFF 구조의 특성을 고려하여 Parser 실행 전 iloc 구조를 사전 스캔하는 가드 로직 배치
실천 포인트
1. 외부 라이브러리의 하드코딩된 제약 사항이 새로운 하드웨어/OS 업데이트로 인해 깨질 가능성 검토
2. 무거운 폴백 라이브러리 도입 시 Dynamic Import를 통한 번들 최적화 적용 여부 확인
3. 도메인 특성에 맞는 데이터 유효성 검사(예: Null Island 제거)를 통해 라이브러리 버그의 영향 최소화
4. 추상적인 보안 원칙보다 실제 위협 모델(Threat Model)에 기반한 가드(파일 크기 제한 등) 우선 구현