세션과 쿠키

김민준·2024년 1월 3일
0
post-thumbnail

이전에도 공부했던 내용이지만 너무 주먹구구식이였어서 다시 공부했다.

이전의 세션/쿠키 공부한 내용 1 2

특히 궁금했던점은..

  1. 쿠키에 세션id만있든 다른 정보도 같이 있든간에 털리면 똑같은거 아닌가 ?
  2. 일반 세션방식과 토큰기반 세션 방식의 정확한 차이
  3. 토큰기반 세션은 결국 정보를 클라이언트에 저장하는데 조삼모사가 아닌가?

웹 애플리케이션에서 사용자의 상태를 관리하는 방법

컨트롤 + 클릭으로 새창에서 열기

위와 같은 방식으로 사용자 상태를 주고 받을 때 HTTPS를 사용하여야한다. HTTP는 암호화가 되어있지 않다.

쿠키 인증 방식 :
1. 서버의 자원을 사용하지 않는다. = 인증의 책임을 클라이언트가 진다.
2. HTTP요청이 탈취된 경우 모든 정보가 탈취된다.
3. 쿠키는 변조가 가능하기 때문에 DB내용으로 검증해야한다.

위의 단점을 보완하기 위해서 정보를 서버에 저장하고, 클라이언트에는 그 정보에 도달하기 위한 세션ID만을 주는 방식이 세션 인증 방식이다.

세션 인증 방식 :
1. 서버의 자원을 사용한다. = 사용자가 많을수록 서버부하가 커진다.
2. HTTPS방식으로 주고받는다.
3. 쿠키에 담긴 세션ID 자체는 개인정보가 아니기 때문에 상대적으로 안전하다.

토큰 인증 방식 :
1. 클라이언트에서 HTTP 헤더에 인증정보를 담아 서버에 전송한다.
2. 서버에서 페이로드에 해당 정보와 만료 기간을 담아서 클라이언트에게 보낸다.(JWT, 엑세스 토큰)
3. 클라이언트는 인증이 필요할때마다 엑세스 토큰을 헤더에 실어보낸다.
4. 서버는 JWT의 시그니쳐를 복호화하고 변조,유효기간을 확인한다.
5. 검증이 통과 된 경우 페이로드를 복호화한다.
6. 유효기간동안 엑세스 토큰을 사용할 수 있기 때문에 짧은 유효기간에 엑세스토큰과 긴 유효기간의 리프레시 토큰을 만든다.
7. 페이로드의 내용이 암호화 되지 않아있다.

그럼 위와같이 로그인을 관리한다면 매 요청마다 세션ID등을 체크해야할까?

미들웨어를 사용하는 것이 바람직하다고한다.

참조한 페이지

[Web] 쿠키(Cookie)와 세션(Session)의 차이, 쿠키란? 세션이란?
출처: https://code-lab1.tistory.com/298#google_vignette [코드 연구소:티스토리]

Cookie, Session, Token 의 차이점

6. 로그인 처리 1 - 쿠키, 세션

[Node]Express.js로 로그인 구현하기 (Session)

profile
node 개발자

0개의 댓글

관련 채용 정보