쿠키(Cookie)&토큰(Token)&세션(Session)

YU NA Joe·2022년 7월 17일
0

쿠키

-브라우저에 저장되는 정보 (크롬이나 사파리 같은 브라우저에 저장되는 작은 텍스트 조각)

-사용자는 브라우저의 설정 화면이나 개발자 도구에서 쿠키를 확인하고, 수정, 삭제할 수 있다.

  • 쿠키는 사용자뿐만 아니라 제 3자가 조회하는 것도 가능하기 때문에 민감한 정보를 저장하는데는 적합 X
    (따라서 조작되어도 크게 문제 되지 않을 정보만 쿠키에 적합. 예를 들어, 웹툰 목록 & 다크페이지)

<로그인 유지 방식>

세션

  • 사용자가 사이트에 한 번 로그인하면은 유효기간이 끝날 떄까지 더 이상 아이디와 비밀번호를 입력하지 않아도 되도록, 이미 서버로부터 인증받았음을 증명해 주는 증명서
    (즉, 세션은 로그인 여부 등 사용자와 서버의 관계가 기억되고 보존되어 있는 상태)

  • what if 세션이 없으면??

로그인한 사용자와,  로그인한 다음에 마이페이지를 누른 사람이 동일 인물임을 서버는 알지 못한다. 
따라서 다른 페이지나 기능들을 클릭 할 때마다 아이디와 비밀번호를 서버에게 제공해야 한다. 
  • 로그인에 성공하면은 서버는 세션 아이디를 만든다. 보통 '2sd98sdfsdf'과 같이 알파벳과 숫자가 혼합된 형식

  • 세션 아이디를 사용자에게 주고, 메모리에 아이디 사본을 저장해 둔다.

  • 사용자는 서버로부터 받은 세션 아이디를 쿠키로 저장한 다음, client의 모든 요청(친구목록, 댓글작성, 장바구니.. etc) 에 전달.

  • 서버가 요청을 받으면은 보관하고 있는 아이디중에 동일한 것을 파악하고 그 정보는 내어준당.

토큰

  • 세션과는 또 다른 로그인 유지 방식
  • 로그인한 사용자에게 세션 아이디 대신에 토큰을 발급해주는 것이다.
  • 토큰에는 수학적 원리가 적용, 고유값을 갖고 있으며, 서버만에 제공가능
  • 토큰을 받아간 사용자는 이를 쿠키로 저장해 두고 필요할 때마다 제시하면 서버는 따로 확인할 필요없이(세션 아이디를 찾을 필요없이) 사용자의 요청을 허가

한계)

  • 여러기기에서의 로그인을 제한하기 위해 서버가 강제로 사용자의 로그인을 시킬 수 있어야 하는데 토큰 방식에서는 이것이 불가능하다
    (즉, 한 번 발행한 토큰은 유효기간이 끝나기 전까지 통제할 수 없기 때문에 세션에 비해 사용자의 정보를 탈취할 가능성이 높다. 하지만 토큰은 만료기간을 정할 수 있기 때문에 만료 시간을 짧게 해주면 된당)

0개의 댓글