인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

박재호님의 프로필 이미지
박재호

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

쿠키/세션과 전체 로그인 흐름.

jwt 관련 질문

작성

·

251

0

안녕하세요 제로초님 jwt로 구현을 해보려고 시도 중입니다!
이해가 안되는 것들이 많아 질문 남깁니다 ㅠㅠ

1. 서버에서 jwt토큰을 발급할때 클라이언트에서 사용할 데이터들(이름, 주소, 프로필 이미지 등)을 jwt 토큰 페이로드에 넣어서 보내고 클라이언트에선 토큰만으로  해당 데이터를 추출하여 사용하는 방식이 맞는건가요? 

2. refresh 토큰은 서버에서 별도로 저장하지만  클라이언트에서도 access 토큰이 만료되면 refresh 토큰을 보내야 해서 클라이언트에서도 별도로 저장을 해야할지 싶은데 로컬스토리지나 쿠키에 저장을 한다면 결국 탈취당할 위험이 있기에 클라이언트에서 refresh토큰을 어디에 보관해야하는지 궁금합니다. 

3. XSS 공격을 막기위해 cookie에 HttpOnly 옵션으로  자바스크립트에서 접근을 못하게 막는다면 클라이언트 개발하는 코드에서도  document.cookie 로 쿠키에 접근을 못하는게 맞나요??

4. 쿠키에 저장하게 된다면 모든 요청마다 헤더에 쿠키정보가 자동으로 담겨서 보내지는 걸로 알고있는데  그렇기에 쿠키보다 로컬스토리지를 사용하는 방법이 더 선호되는지 궁금합니다!

 

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

1. 네 그렇게 가능합니다.

2. 쿠키나 로컬스토리지에 하시는수밖에 없습니다. 그리고 탈취당하지 않게 철저히 점검하세요.

3. httpOnly 쿠키만 쓰면 알아서 document.cookie가 비어있습니다.

4. 네 토큰 용량이 크다면 로컬스토리지에 저장해서 필요할 때에만 전송해야 서버 트래픽을 줄일 수 있습니다.

박재호님의 프로필 이미지
박재호

작성한 질문수

질문하기