인증 / 보안_2. Session

Seoyong Lee·2021년 6월 29일
0
post-thumbnail

Session

세션(Session)은 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 말한다. 쿠키가 클라이언트에 모든 데이터를 저장하는 것과 달리 세션은 서버에 데이터를 두고, 세션의 키값만을 클라이언트에 남겨두어 보안이 강화된 방식이다.

작동 방식

세션의 작동 방식은 다음과 같다.

  1. 사용자가 로그인을 시도한다.
  2. 서버에서는 계정 정보를 통해 사용자를 확인한 후, 고유 ID값을 부여하여 세션 저장소에 저장한다. 또한 이와 연결되는 세션 ID를 발행한다.
  3. 사용자는 서버에서 세션 ID를 받아 쿠키에 저장한 후, 인증이 필요한 요청 시마다 쿠키를 헤더에 실어서 보낸다.
  4. 서버에서는 쿠키를 받아 세션 저장소에서 대조한 후, 대응하는 정보를 가져온다.
  5. 인증이 완료되면 사용자에게 맞는 데이터를 보내 응답한다.
  6. 로그아웃 요청을 보내면 서버의 세션 정보를 삭제하고 클라이언트의 쿠키를 갱신한다.

위 구조에서 세션은 쿠키를 단지 키(세션 ID)로 사용하는 것을 볼 수 있다. 이는 인증의 책임을 서버가 지게 하기 위한 것으로 서버를 해킹하는 것이 상대적으로 어려울 것이기 때문에 쿠키에 비해 더욱 보안이 강화된 방법이라고 할 수 있다.

구현

Node.js에서 세션을 구현하기 위한 미들웨어로 'express-session'이 존재한다. 이는 Node.js 시리즈에서 실제 코드를 통해 작성해 보려한다.

세션의 단점

세션은 역시 세션/쿠키를 위한 별도의 저장공간을 필요로 하기 때문에 서버에 부하가 생기게 된다. 이는 다음에 다룰 토큰 기반 인증을 통해 해결할 수 있다.

참고
tcpschool.com - 세션
쉽게 알아보는 서버 인증 1편(세션/쿠키 , JWT)

profile
코드를 디자인하다

0개의 댓글