[Network] Cookie & Session

민수·2023년 1월 17일
0
post-thumbnail

HTTP는 무상태성이라는 특성을 가지고 있기 때문에 서버는 클라이언트를 구분할 수 없다.
이러한 점을 보완하기 위해 Cookie와 Session이 등장한다.

Cookie와 Session의 차이점

저장 위치

  • Cookie : 클라이언트
  • Session: 서버

보안

  • Cookie : 클라이언트에 저장되므로 Session에 비해 상대적으로 취약
  • Session : 중요한 정보는 서버에 저장되고 Session ID만 클라이언트에 저장되므로 Cookie에 비해 상대적으로 안전

속도

  • Cookie : 요청 시 클라이언트에 있는 Cookie만 보내기 때문에 Session에 비해 상대적으로 빠름
  • Session : 클라이언트에게 받은 Session ID를 DB에 조회해야 하기 때문에 Cookie에 비해 상대적으로 느림

서버가 클라이언트를 기억해야 하는 경우가 있다.
예를들어 로그인을 했다면 해당 계정의 정보를 기억하고 있어야 한다.
HTTP는 Cookie를 이용해 서버가 클라이언트를 식별할 수 있도록 해준다.

Cookie의 동작 방식

  1. 클라이언트가 웹 사이트에서 팝업 창 하루 안보기를 클릭하고 서버에 요청을 한다.
  2. 서버는 클라이언트가 요청한 내용을 확인하고 클라이언트에게 응답 메시지와 함께 Cookie를 전달한다.
  3. 클라이언트는 서버에 요청을 보낼 때마다 받았던 Cookie를 서버에 함께 전달한다.
  4. 서버는 Cookie를 보고 클라이언트를 식별해 팝업 창을 띄우지 않는다.

장점

HTTP는 비연결성이지만 연결성 처럼 보이게 만들어 줌
서버의 부하가 Session 방식에 비해 적음

단점

보안에 약함 (쿠키변조)
저장이 브라우저에 되기 때문에 내용 탈취가 쉬움
용량에 제한이 있음(4KB)

Session

Cookie 방식을 기반으로 하지만 사용자 정보가 담긴 파일을 서버가 관리한다.

Session 동작 방식

  1. 클라이언트가 로그인 폼에 정보를 입력하고 Submit을 눌러 서버에 요청을 한다.
  2. 서버는 ID와 PW가 맞는지 체크를 하고 맞다면 DB에서 해당하는 사용자의 암호화된 식별자만 Cookie로 전달해준다.
  3. 클라이언트는 요청할 때마다 받았던 Cookie를 서버에 함께 전달한다.
  4. 서버는 Cookie를 보고 DB에 해당하는 식별자가 있는지 체크를 하고 요청을 처리한다.

장점

사용자의 정보를 서버에 저장하기 때문에 보안이 좋음
용량에 제한이 없음(서버 용량에 따라 다름)

단점

사용자가 많아질 수록 서버의 부하가 Cookie 방식에 비해 큼

브라우저의 저장소와 자바스크립트 변수의 다른점

자바스크립트 코드는 페이지가 이동이 되면 자바스크립트가 바뀌고 변수가 바뀌게 된다.
그래서 페이지를 이동하더라도 특정 변수의 내용을 유지하고 싶을때는 브라우저의 저장소를 이용하게 된다.

참조

https://hudi.blog/cookie-and-session/
https://c-yhhhhh.tistory.com/145
https://victorydntmd.tistory.com/286
https://interconnection.tistory.com/74

0개의 댓글