본문 바로가기

Back End/Server

[Server] Jwt Token vs Session -1- (Session편)

[Server] Jwt Token vs Session -1- (Session편)


개요

  프로젝트를 진행하며, 프로젝트의 목적에 맞는 로그인 방식을 찾기 위해 공부한 Jwt Token을 통한 로그인과 Session을 통한 로그인 방식의 차이점을 알아본다. 그 중, 1편에서는 Session에 대해 이해하고 공부한다.

 

목차

 

소개

 1. Cookie 란? 

 

Cookie 란?

 

  Cookie란, 브라우저가 저장하고자 하는 텍스트정보를 담은 작은 기록 정보 파일이다. 유저는, 특정 웹 브라우저에 접근 할 때, 이전에 받은 Cookie정보와 함께 서버에 요청을 하게 되며, 서버는 쿠키의 유효성을 확인하여 로그인을 유지해주는 역할을 할 수 있게 된다.

 

 Cookie의 보안 이슈

 

  • http only Cookie가 아닌, 일반 쿠키는 유저가 임의의 값으로 변경할 수 있다.
  • 악성코드를 통해 Cookie를 탈취당할 수 있다.
  • 유효기간이 없는 Cookie라면, 한번 탈취 후 계속하여 사용할 수 있다.

 

 2. Session 이란? 

 

Session 이란?

 

  Session이란, 위에서 언급된 Cookie의 보안이슈를 해결하고자 등장한 개념으로, "일정 시간동안 같은 브라우저(사용자)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술" 이라고 할 수 있다. 즉, 사용자가 같은 웹 브라우저로 로그인을 성공한다면, 일정 시간동안 로그인 상태를 유지시켜주는 것 이라고 할 수 있다.

 

Cookie를 활용한 Session 로그인 방식의 동작 순서

 

 

  1. 클라이언트가 특정 웹 사이트(서버)에 접속(Http request)을 요청한다.
  2. 서버는 Cookie를 확인해, 존재여부를 확인한다.
  3. Session id를 담은 Cookie가 함께 넘어왔다면, Session id를 확인해, 유효 시간을 확인하고 유효성이 확인된다면, Session id와 mapping 되어 있는 User의 정보를 가져와 작업을 수행한다.
  4. Session id를 담은 Cookie가 함께 넘어오지 않았다면, 로그인을 이어주지 않고, 로그인 요청이 들어올 때, 서버는 Session id를 생성하여 브라우저(사용자)에게 새로운 Cookie를 발급하고 Session 정보를 서버에 저장한다.