카테고리 없음

유저 정보 저장하기: JWT, 토큰, 로컬스토리지

note-for-development 2024. 8. 10. 19:31

 

JWT(JSON web token)

모바일이나 웹에서 클라이언트와 서버 간 통신 시 사용자의 인증을 위해 사용된다.

암호화된 토큰이다.

클라이언트에서 주로 헤더에 담아 전송되면 서버에서 사용자의 정보 열람, 권한 부여 등을 수행한다.

 

 

 

우아한테크코스 학습로그 저장소

우아한테크코스 크루들이 배운 내용을 기록하는 학습로그 저장소입니다.

prolog.techcourse.co.kr

 

JWT가 탈취될 때의 문제점

- XSS 공격 : 해커(공격자)가 상대방(피해자)의 브라우저에 스크립트가 실행되도록 한다.

- CSRF 공격 : 상대방(피해자)가 스스로 의도하지 않은 행위를 웹사이트에 요청하게 한다.

 

JWT의 저장 장소

세션 스토리지 : 모든 자바스크립트 코드를 통해 엑세스 할 수 있다.

XSS 공격에 취약하다. CSRF 공격에는 안전하다.

로컬 스토리지 : 모든 자바스크립트 코드를 통해 엑세스 할 수 있다.

XSS 공격에 취약하다. CSRF 공격에는 안전하다.

쿠키 : 옵션이 없는 경우 취약하다.

XSS 공격에 취약하다. CSRF 공격에도 취약하다.

 

쿠키의 옵션

쿠키의 옵션을 선택하면 XSS 공격과 CSRF 공격에 대비할 수 있다.

1. httpOnly: true

자바스크립트 코드 상에서 접근이 불가능해지고, HTTP 요청에만 포함되어 보내진다.

클라이언트에서도 자바스크립트로 접근하는 것이 불가능하다.

 

2. secuer : true

HTTP 통신 시에만 쿠키를 사용하도록 한다.

HTTP 패킷이 하이재킹 당해 탈취당하는 것을 막는다.

패킷이란 통신에서 주고받는 데이터의 구조로, 한번에 통신하면 시간이 오래 걸리는 등 효율이 좋지 않아 나누어서 전달한다.

하이재킹은 토큰이 탈취당하는 것을 말한다.