JWT(Jason Web Token)
JWT Process
세션으로 인증하면 서버에 부하가 걸린다. 구글은 유저가 20억명이다.
그래서 나온 게 jwt, 클라이언트에게 부여해버리기, 인증만 하는것이야~
JWT = JSON Web Token 약자로 전자 서명 된 URL-safe의 JSON이다
서버는 헤더에 포함되어 있는 JWT 정보를 통해 인증
토큰 구성
AAAAAA.BBBBBB.CCCCCC
header, payload, signature
- header : 토큰의 타입과 해시 암호화 알고리즘
- payload : 토큰에 담을 클레임(claim) 의 정보를 포함
- 정보의 한 조각을 클레임
- name : value 한 쌍으로
- 토큰에는 여러개의 클레임을 넣을 수 있다
- 클레임의 정보 : 등록된 클레임, 공개 클레임, 비공개 클레임 세 종류
- signature : secret key를 포함하여 암호화 되어 있다
- jwt : 값에 의한 호출이 가능한 토큰
jwt 토큰 저장방법
- 로컬 스토리지 : 웹 브라우저의 클라이언트 측에서 데이터를 저장하는 방법
- 브라우저에 내장된 api, 웹 애플리케이션이 사용자의 브라우저에 데이터를 키-값(key-value) 쌍 형태로 영구적으로 저장할 수 있도록 한다.
- 사용자가 웹사이트를 떠나거나 브라우저를 닫았다가 다시 열더라도 유지된다.
- 상대적으로 사용이 간단하고 쉽게 접근 가능하다.
- 단점 : XSS(Cross-Site Scripting) 공격에 취약할 수 있음. 공격자가 자바스크립트를 통해
localStorage
에 접근할 수 있다면, 토큰을 탈취할 가능성이 있음.
- 쿠키 : 토큰을 http 쿠키에 저장하는 방식
- 클라이언트는 서버에 요청할 때마다 JWT가 자동으로 포함되므로, 프론트엔드 코드에서 별도로 JWT를 관리하지 않아도 됩니다.
HttpOnly
및Secure
옵션을 설정하면 XSS 공격으로부터 보호 가능.- 쿠키는 일반적으로 4KB 이하의 데이터를 저장, 큰 페이로드를 가진 JWT는 쿠키에 저장하기에 부적절
- 세션 스토리지
localStorage
vs. 쿠키
localStorage
: XSS 공격에 취약하지만, CSRF 공격에 안전합니다. 단순한 SPA 애플리케이션에서는 자주 사용됩니다.- 쿠키: XSS 공격에 더 안전할 수 있지만, CSRF 공격에 취약할 수 있습니다. 보안에 민감한 애플리케이션에서는
HttpOnly
쿠키에 JWT를 저장하고 CSRF 토큰을 사용하는 것이 좋습니다.
https://blog.naver.com/shino1025/221568544633
세션은 뭐고 JWT는 무엇일까
이번 포스팅에서는 토큰 기반 인증 시스템의 대표적인 규약인 JWT(JSON Web Token)에 대해 알아보...
blog.naver.com
'CS > Network' 카테고리의 다른 글
쿠키, 세션, 웹 스토리지(로컬,세션 스토리지)에 관하여..jwt는 어디에 저장하나? (0) | 2024.12.17 |
---|