-
[Network] 쿠키와 세션, 그리고 토큰에 대하여Network Basis 2021. 12. 1. 17:25
# 사용자를 식별해야해 🥺
웹은 대다수가 HTTP기반으로 동작한다.
하지만 HTTP의 방식에서는 웹서버와 클라이언트가 연결을 유지한 상태가 아니라 request와 response 의 반복일 뿐이다.
같은 사용자에 의해 요청이 이뤄지는지 확인할 방법이 필요한데, 이때 등장하는 것이 바로 '쿠키'와 '세션'이다.
# 쿠키(Cookie)? 🍪
쿠키는 웹사이트를 방문할 때 사용자의 브라우저에 심겨지는 작은 파일이며, Key-Value 쌍으로 이루어진 파일이다.
쿠키에는 두가지 종류가 있는데, 그 중 persistence cookie를 우리는 흔히 '쿠키'라 부른다.
그러나 단어를 보면 짐작되듯이, 로컬에 영구저장되기 때문에 쿠키변조의 위험성이 있다.
# 세션(Session)? ⏱
세션은 session cookie를 일컫는다.
브라우저 로컬스토리지가 아닌, 메모리에 저장이되기 때문에 휘발성을 갖는다.
따라서, 브라우저가 종료된다면 session 쿠키는 사라지게 된다.
보통 서버에서 세션정보를 저장하고 있고, 브라우저로 response 헤더에 session-id를 넘겨주는 식으로 구현한다.
세션정보는 세션이 끊어지면 파기해주거나 시간제한을 두어야 해커의 공격을 막을 수 있다.
# 토큰(Token) - JWT(JSON WEB TOKEN)
인증에 필요한 정보들을 암호화시킨 객체이다.
세션과 다르게 서버는 Secret key로 토큰을 받아 복호화만 하면 되므로, 별도의 저장공간이 필요없게 된다.
이는, 인증을 stateless 하게 만들기 때문에 서버확장이 자유로워 진다.
요즘처럼 Cloud로 ScaleUp & ScaleDown 이 빈번히 발생하는 상황에서 매우 좋은 인증방법이다.
하지만, 인증이 필요한 요청이 많아질수록 JWT의 길이는 길기때문에 서버의 자원낭비가 발생한다.
728x90'Network Basis' 카테고리의 다른 글
[Network] HTTP 프로토콜의 발전 (HTTP 1.1 vs HTTP2) 그리고 구글(HTTP3, QUIC) (0) 2021.12.10 [Network] JWT - 왜 refresh 토큰이 필요하지? (refresh 토큰이 탈취된다면?) (12) 2021.12.10 [Network] SOP 와 CORS Policy (0) 2021.12.01 [Network] DNS란? (0) 2021.11.03 [Network] 윈도우에서 nginx 가 실행되지 않아요! & 윈도우에서 사용 중 포트 종료시키기 (0) 2021.04.12