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

Seung Min Liang님의 프로필 이미지

작성한 질문수

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

Refresh 토큰과 Access 토큰

보안 및 content type 질문

작성

·

353

0

Token 발급 과정에서

username:password 값을 base64 로 인코딩 후 authorization 헤더에 Basic $token 형태로 전송하는 것이 정석이라고 말씀해주셨습니다.

질문1.

Basic $token 형태는 인증정보가 그대로 base64 형태로 인코딩해줍니다. 그러면 누군가가 이 패킷을 까보기만 하면 데이터를 알 수 있는 것이 아닌가요..? 이 부분이 이해가 잘 안되네요. 설명부탁드립니다..

질문2.

추가로 챗gpt 에게 질문했을 때, 로그인할 때 content type 을 application/x-www-form-urlencoded 형태로 보내라고 하는데, 대부분은 json 형태로 전송하더라구요.. 설명부탁드립니다...

답변 1

-1

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

안녕하세요!

1) Basic $token 형태는 인증정보가 그대로 base64 형태로 인코딩해줍니다. 그러면 누군가가 이 패킷을 까보기만 하면 데이터를 알 수 있는 것이 아닌가요..? 이 부분이 이해가 잘 안되네요. 설명부탁드립니다..

맞습니다. base64 인코딩은 암호화가 아닙니다. 단순히 인코딩만 달리 했을 뿐이라 패킷을 까본다면 당연히 노출됩니다. 이는 Basic 토큰 전송시에만 생기는 문제가 아닙니다. 모든 요청은 패킷을 까볼 수 있다면 전부 노출 됩니다. 물론 원하신다면 여기에 복호화가 가능한 암호화를 해서 요청을 보내셔도 됩니다.

2) 추가로 챗gpt 에게 질문했을 때, 로그인할 때 content type 을 application/x-www-form-urlencoded 형태로 보내라고 하는데, 대부분은 json 형태로 전송하더라구요.. 설명부탁드립니다...

이 부분은 크게 상관 없습니다. 보통 서버는 x-www-form-urlencoded든 form-data든 json이든 모두 직렬화 되도록 구현됩니다. 서버에서 지원하는 형태로 요청을 보내시면 됩니다.

1, 2번 모두 단순 약속일 뿐입니다. 얼마나 많은 보안 레이어를 추가하냐는 기획에 달려있습니다.

감사합니다!