인프런 커뮤니티 질문&답변

Seung Min Liang님의 프로필 이미지
Seung Min Liang

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

Restaurant Pagination 요청해보기

ID, PW 전송시, Base64 인코딩을 사용하는 이유가 궁금합니다.

작성

·

317

0

질문의 내용은 제목과 동일합니다.

아래는 제가 궁금해서 찾아본 내용입니다.

 

Base64 인코딩은 텍스트형태로 데이터를 전송할 때 사용한다고 하더군요.

저희는 HTTP 통신을 하게 되는데, HTTP 통신에서는 이진데이터 전송이 불가하다고 합니다. (버전별로 다 그런지 찾아본것은 아님)

그래서 pdf 나 이미지 같은 이진 바이너리 파일을 전송하기 위해 Base64 를 사용한다고 이해를 했습니다.

코드 상에서 String 형태의 문자열은 이미 문자열 형태라고 하는데.. ID, PW 를 Base64 인코딩하시는 이유가 있을까요?

찾아본 바로는, 있다면 시스템간의 호환성 문제일거라고 생각하는데, 호환성 문제라고 찾았본 케이스들은 너무 예전 시스템이라고하니 와닿지 않네요.

 

찾아본 내용들은 책이 아니라, 인터넷에서 검색한 내용들이라 틀렸을 수도 있습니다.

실무에서는 일반적으로 ID/PW에 대해 Base64 인코딩을 사용하는 것인가요?

 

 

 

 

 

 

 

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

답변에 실망하실수도 있으나 그냥 일종의 약속이라고 생각하시면 됩니다. (즉, 제가 정한 스펙이 아닙니다)

OAuth라는 스펙에서 ID/PASS를 base64 인코딩해서 보내는걸로 정의가 돼있으며 대부분의 인증 스펙이 OAuth를 사용하기 때문에 실무에서 보통 base64를 사용한다고해도 틀리진 않습니다.

정확히는 base64가 아니라 URL에서 사용가능한 특수문자만 사용하는 url encoded base64입니다.

같은 이유로 추측을 해보자면 아마 base64를 사용하게되면 인식 불가능한 문자가 전송될 일이 없기때문이 아닐까 예측 해봅니다. 단순하게 스펙이 만들어지던 당시에 base64가 가장 스탠다드하고 인기 있던 인코딩 방식이었을수도 있구요.

감사합니다!

Seung Min Liang님의 프로필 이미지
Seung Min Liang

작성한 질문수

질문하기