[CS] Cookie, Session, Token

조진우·2023년 4월 25일
0

Computer Science

목록 보기
3/7
post-thumbnail

세션, 쿠키, 토큰은 저장소를 일컫는 용어이다.

세션은 데이터를 서버에 저장
쿠키는 데이터를 클라이언트 환경에 저장

쿠키, 세션, 토큰이 등장한 이유?

HTTP 통신은 요청(Request) => 응답(Response)이 종료되면 stateless(상태가 유지되지 않은)한 특징 때문에 연결을 끊는 처리 방식
즉, '누가' 로그인 중인지 상태 를 기억하기 위해 쿠키, 세션, 토큰을 사용한다.

  • 쿠키는 브라우저가 Request 전송 시, Header에 넣어서 서버에 전송함.
  • 동작방식
    1. 클라이언트가 페이지 요청
    2. 서버에서 쿠키를 생성
    3. HTTP 헤더에 쿠키를 포함시켜 응답
    4. 브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있음
    5. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
    6. 서버에서 쿠리를 읽어 이전 상태 정보를 변경할 필요가 있는 경우, 쿠키를 업데이트하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답

Session

  • 로그인 시 사용자가 정보를 저장하고, 열쇠로 사용할 수 있는 세션 ID를 클라이언트에 부여함.

  • 쿠키를 기반으로 하고 있지만, 데이터 파일을 서버에 저장함

  • 클라이언트가 서버에 Request를 보내면 서버는 클라이언트에게 고유의 세션 ID를 부여하며, 브라우저가 서버에 접속한 후 종료할 때까지 상태를 유지함.

  • 접속 제한 시간을 설정할 수 있으며, 일정 시간 응답이 없을 경우 세션 만료 설정 가능

  • 세션은 서버 리소스를 사용하므로, 서버 성능에 영항을 미침

  • 동작방식

    1. 클라이언트가 서버에 로그인 시, 서버로부터 세션 ID를 받음
    2. 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장
    3. 클라이언트는 서버에 요청할 때, 쿠키의 세션 ID를 서버에 전달하여 사용
    4. 세션 ID를 전달받은 서버는 세션 ID로 세션에 있는 클라이언트 정보를 가져옴
    5. 클라이언트 정보를 가지고 클라이언트에게 응답함

Cookie와 Session 차이점

  • 쿠키는 클라이언트, 세션은 서버에 저장됨
  • 처리속도는 쿠키가 더 빠름, 세션은 서버에서 처리가 필요하므로 쿠키보다 느림
  • 쿠키는 클라이언트에 저장되어 보안상 취약, 세션은 서버에서 처리하므로 보안성이 좋음

Token

  • 인증을 위해 사용되는 암호화된 문자열
  • 사용자가 인증에 성공하면 서버는 토큰을 생성하여 클라이언트에 전송
  • 세션 인증에서는 서버가 세션 id를 저장하고 클라이언트가 쿠키에 실어 보낸 세션 id와 대조에서 확인하지만,
  • 토큰을 사용하면 요청을 받은 서버는 토큰이 유효한지를 확인만함. http통신의 stateless한 성격과 더 적합한 인증방식
profile
The Top of Iceblog

0개의 댓글