[Whois 정보보안교육] 쿠키, 세션, 세션 쿠키, JWT 공통점과 차이점 정리
HTTP 쿠키 (웹 쿠키 or 브라우저 쿠키)
쿠키(cookie) : 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각이다.
브라우저는 데이터 조각(쿠키)들을 저장해 놓았다가,
동일한 서버에 재요청 시 저장된 데이터를 함께 전송한다.
쿠키는 여기서 두 요청이 동일한 브라우저에서 들어왔는지를 판단할 때 사용한다.
이를 이용하면 사용자의 로그인 상태를 유지할 수 있는데,
이는 상태가 없는(stateless) HTTP 프로토콜에서 상태 정보를 기억시켜주기 때문이다.
*stateless : 두 요청간에 성공적으로 같은 연결을 이끌어내주는 연결(link)이 없음을 말한다.
쿠키의 사용 목적 세 가지
세션 관리(Session management)
: 서버에 저장해야 할 로그인, 장바구니, 게임 스코어 등의 정보 관리
개인화(Personalization)
: 사용자의 선호, 테마 등의 세팅
트래킹(Tracking)
: 사용자의 행동을 기록하고 분석하는 용도
HTTP 쿠키의 특징
- 쿠키는 한 개에 4 KB까지 저장 가능하며, 최대 300개까지 저장할 수 있는 텍스트 파일이다.
- 쿠키는 클라이언트에 저장된다.
- 쿠키에는 이름, 값, 만료날짜, 경로 정보가 들어있다.
- 기본적으로 쿠키는 웹 브라우저가 종료되면 삭제된다. (만료날짜를 별도로 지정해 줄 수 있다.)
- 웹 브라우저에 해당 서버의 쿠키 정보가 있으면 HTTP 요청에 무조건 담아 보낸다.
HTTP 쿠키 작동방식
HTTP 세션
통신을 하기 위해 서로 연결된 순간부터 통신을 마칠 때까지의 기간을 의미한다.
즉, 클라이언트가 웹서버에 연결된 순간부터 서버와의 HTTP 통신을 끝날 때까지의 기간을 말하는 것이다.
하지만 보통 세션이라고 말할 때에는 서버 세션에 대한 정보를 저장해 놓고
세션 쿠키를 클라이언트에게 주어 서버가 클라이언트를 식별할 수 있도록 하는 방식 자체를 의미하는 경우가 많다.
HTTP 세션의 특징
- 따로 용량의 제한이 없다. (서버의 능력에 따라 다를 수 있다.)
- 서버에 세션 객체를 생성하며 각 클라이언트마다 고유한 세션 ID값을 부여한다.
- 쿠키를 사용하여 세션 ID값을 클라이언트에 보낸다.
- 웹 브라우저가 종료되면 세션 쿠키는 삭제된다.
HTTP 세션 작동방식
쿠키와 세션의 차이
쿠키(Cookie) | 세션(Session) | |
저장 위치 | 클라이언트(=접속자 PC) | 웹 서버 |
저장 형식 | text | Object |
만료 시점 | 쿠키 저장시 설정 (브라우저가 종료되어도, 만료 시점이 지나지 않으면 자동 삭제되지 않음) |
브라우저 종료시 삭제 (기간 지정 가능) |
사용하는 자원(리소스) | 클라이언트 리소스 | 웹 서버 리소스 |
용량 제한 | 총 300개 하나의 도메인 당 20개 하나의 쿠키 당 4KB(=4096 byte) |
서버가 허용하는 한 용량제한 없음. |
속도 | 세션보다 빠름 | 쿠키보다 느림 |
보안 | 세션보다 안좋음 | 쿠키보다 좋음 |
JWT (Json Web Token)
JWT는 JSON Web Token의 약자로 전자 서명된 URL-safe(URL로 이용할 수 있는 문자만 구성된)의 JSON이다.
JWT는 서버와 클라이언트 간 정보를 주고 받을 때
HTTP 리퀘스트 헤더에 JSON 토큰을 넣은 후
서버는 별도의 인증 과정없이 헤더에 포함되어 있는 JWT 정보를 통해 인증한다.
이때 사용되는 JSON 데이터는 URL-Safe 하도록 URL에 포함할 수 있는 문자만으로 만든다.
JWT는 HMAC 알고리즘을 사용하여 비밀키 또는 RSA를 이용한 공개키/개인키 쌍으로 서명할 수 있다.
출처
https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies
HTTP 쿠키 - HTTP | MDN
HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각입니다. 브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데
developer.mozilla.org
https://noahlogs.tistory.com/38
[네트워크] HTTP 쿠키와 세션이란 ?
HTTP 에는 쿠키라는 개념이 존재하는데, 이름부터가 친숙하고 귀엽다. 왜 쿠키라는 이름이 붙여졌을까에는 여러가지 이야기들이 있는데, 내가 처음 공부할 때 들었던 이야기는 헨젤과 그레텔
noahlogs.tistory.com
https://hahahoho5915.tistory.com/32#recentEntries
쿠키(Cookie), 세션(Session) 특징 및 차이
개요 > 쿠키(Cookie), 세션(Session) 각각 특성 및 차이 확실히 분류하기 메모 1. 공통점 : 웹 통신간 유지하려는 정보(ex:로그인 정보 등)를 저장하기 위해 사용하는 것(?) 2. 차이점 : 저장위치, 저
hahahoho5915.tistory.com
http://www.opennaru.com/opennaru-blog/jwt-json-web-token/
JWT (JSON Web Token) 이해하기와 활용 방안 - Opennaru, Inc.
JWT 는 JSON Web Token의 약자로 전자 서명 된 URL-safe (URL로 이용할 수있는 문자 만 구성된)의 JSON입니다.JWT는 속성 정보 (Claim)를 JSON 데이터 구조로 표현한 토큰으로 RFC7519 표준 입니다.
www.opennaru.com