기술블로그-Fastapi편
✅ 왜 Base62 인코딩을 사용하는가?
Chansman
2025. 5. 27. 13:56
✅ 왜 Base62 인코딩을 사용하는가?
1. 🎯 목적 요약
"DB에서 생성된 숫자 ID나 긴 문자열을 짧고 예쁘게 바꿔서 URL이나 코드에 사용하기 위해"
2. 📌 Base62 인코딩이란?
- 0
9, az, A~Z 총 62개의 문자로 구성된 인코딩 방식 - 숫자나 UUID를 짧은 문자열로 변환하는 데 사용
- URL-safe 하며, 사람이 읽고 입력하기 편함
3. 🔍 왜 바꾸는가? (실전 이유)
✅ 1) 너무 길고 보기 안 좋기 때문
- DB ID: 12345678901234
- UUID: 550e8400-e29b-41d4-a716-446655440000
➡ Base62 인코딩 시 → 8FaX9
📦 사용자가 복사·공유·입력하기 훨씬 쉬움
✅ 2) 보안을 위해 (ID 유추 방지)
https://myapp.com/user/102
https://myapp.com/user/103
- 누가 봐도 ID 순서가 보임 → 타인의 정보 유출 가능성
https://myapp.com/user/dF3X1
- Base62를 쓰면 유추 불가 → 보안 강화
✅ 3) URL에 안전하게 넣기 위해
- 한글, 특수문자, 공백은 URL에서 문제가 됨
- Base62는 영문+숫자만 사용 → 100% URL-safe
4. 🛠️ 실제 사용 사례
사용처 이유
단축 URL | 긴 주소를 짧게 줄이기 위해 |
초대 코드 | 사람에게 보여줄 수 있게 짧고 예쁘게 |
주문 번호 | 노출돼도 유추 불가능하게 |
QR코드 값 | 짧고 고정된 길이로 인코딩 |
5. 🔁 흐름 정리
- 서버에서 DB에 데이터 저장 → ID 생성 (예: 12345)
- 이 ID를 Base62로 인코딩 → "dF3X"
- 외부에 노출할 때는 이 인코딩된 값 사용 → /invite/dF3X
❌ 클라이언트가 직접 숫자를 넣지 않음
✅ 서버가 내부 ID를 변환해서 사용자에게 보여주는 구조
🧠 최종 요약
질문 답변
왜 Base62를 써요? | 숫자/UUID를 짧고 안전한 문자열로 바꾸기 위해 |
어떤 상황에서 써요? | 단축 URL, 초대코드, 주문번호 등 외부 노출용 코드 |
이 값은 누가 만드나요? | 서버가 자동 생성한 ID를 변환합니다 |
꼭 필요한가요? | 사용자 편의, 보안, URL 호환성 측면에서 매우 유용함 |
Base62 인코딩은 사용자 경험을 개선하면서도 보안을 강화하는, 실무에서 매우 자주 쓰이는 전략입니다. 꼭 기억해두세요! 😉