[네트워킹] 세션, 쿠키

Chloe Choi·2021년 3월 24일
0

네트워킹

목록 보기
9/11
post-custom-banner

배경

HTTP는 Stateless한 프로토콜
Stateless: 클라이언트, 서버 어느쪽에도 상대에 대한 정보를 담고 있지 않음. 따라서, 모든 메세지는 독립적으로 보내짐

이렇게 해 모든 사용자의 요청마다 연결과 해제의 과정을 거치며 연결 상태를 유지하지 않고, 연결 해제 후에도 상태 정보를 저장하지 않아 서버의 자원을 크게 절약할 수 있음

하지만 같은 사용자가 여러번의 요청을 보낼 때 항상 new visitor라고 생각해 매번 연결을 설정함

💡 HTTP의 무상태성을 보완하여 서버가 클라이언트를 식별하게 해주자!

쿠키

: 웹 사이트에 접속할 때 생성되는 정보를 담은 파일

  • 서버가 사용자의 웹 브라우저에 저장하는 데이터
  • Key : Value 형태의 String
  • 도메인에 20개까지 제한
  • 따라서, 세션관리, 개인화, 트래킹을 할 수 있음
    • 로그인, 접속 시간, 장바구니 등 서버가 알아야 할 정보를 저장해 세션관리
    • 사용자마다 다르게 개인화된 페이지를 보여줄 수 있음
    • 사용자의 행동과 패턴을 분석하고 기록하는 트래킹 가능

단점

  • 정보가 기록되기 때문에 사생활을 침해할 소지가 있음
  • 사용자에 저장되기 때문에 임의로 고치거나 가로채기가 쉬워 보안에 취약
    쿠키

세션

: 일정시간 동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술
일정시간: 웹 서버 접속부터 브라우저 종료까지

  • 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보 저장
    따라서, 서버에 별도의 세션저장소가 필요함
  • 일정시간 동안만 유지 👉 쿠키보다 보안적으로 우수
  • 저장 데이터에 제한X

둘을 같이 쓰자!

역할

세션

서버에서 가지고 있는 정보

쿠키

사용자에게 발급된 세션을 열기 위한 열쇠(SESSION ID)

즉, Client는 쿠키를 이용, Server는 쿠키를 받아 세선의 정보에 접근
인증의 책임을 서버에 짐

로그인한 사용자에 대해서만 세션을 생성하는 것이 아니라
로그아웃하면 새로운 사용자로 인식해서 새로운 세션이 생성

장점

각 사용자는 고유 아이디를 가짐
따라서, 서버는 쿠키를 받았을 때 회원정보를 확인할 필요가 없음
👉 서버의 자원에 접근하기 용이

단점

  • HTTP 요청을 가로채고 그 쿠키로 요청한다면?
    👉 정상 사용자로 오인해 데이터를 줄 수 있음
    Sol) HTTPS 사용 / 세션에 유효시간을 설정
  • 서버에 추가공간이 필요 👉 부하

ref. https://devuna.tistory.com/23

profile
똑딱똑딱
post-custom-banner

0개의 댓글