피드로 돌아가기
Dev.toBackend
원문 읽기
바이너리 데이터를 텍스트로 안전하게 전송하는 Base64 인코딩 핵심 정리
What Is Base64 Encoding and Why Do Developers Use It Everywhere
AI 요약
Context
텍스트 기반 프로토콜인 SMTP, JSON, XML 등은 raw binary 데이터를 직접 처리하지 못함. 바이너리 데이터의 null 바이트나 제어 문자는 텍스트 시스템에서 데이터 손상이나 오류를 유발함.
Technical Solution
- 64개의 안전한 출력 가능 문자(A-Z, a-z, 0-9, +, /)만을 사용하여 바이너리 데이터를 텍스트로 변환하는 방식
- 입력 데이터 3바이트를 4개의 문자로 매핑하여 텍스트 전용 환경에서도 데이터 무결성을 유지하는 설계
- HTML/CSS 내 Data URL 형식을 통해 소형 이미지나 아이콘을 인라인으로 삽입하여 HTTP 요청 횟수 최적화
- JWT(JSON Web Tokens)의 각 세그먼트를 인코딩하여 URL 및 HTTP 헤더를 통한 안전한 데이터 전송 구현
- JavaScript btoa 함수 사용 시 발생하는 Latin1 범위 외 문자 오류를 해결하기 위해 UTF-8 사전 인코딩 후 Base64 적용 전략
Impact
- 인코딩 후 데이터 크기가 원본 대비 약 33% 증가
- 10KB 미만의 소형 파일 인라인화 시 네트워크 요청 효율 개선
Key Takeaway
Base64는 데이터 보호를 위한 암호화가 아닌 텍스트 환경에서의 안전한 전송을 위한 포맷팅 도구임. 데이터 크기 증가라는 트레이드오프가 존재하므로 파일 크기에 따른 전송 방식(Base64 vs multipart/form-data) 선택이 중요함.
실천 포인트
10KB 미만 소형 이미지의 HTTP 요청 최적화 시에만 인라인 Base64를 사용하고, 대용량 파일 전송 시에는 multipart/form-data 방식을 적용할 것