[HTTP/Front-end] 쿠키(Cookie)/세션(Session)/캐시(Cache)

silverj-kim·2020년 6월 26일
1
post-thumbnail
post-custom-banner

어쩌다보니 첫 글로 쿠키, 세션, 캐시를 쓰게 됐네요.
네이버 블로그를 꾸준히 쓰다가 기술 블로그를 velog나 gitbug.io로 옮기고 싶었는데 드디어 첫 글을 적게 됐네요. :)


틀린 부분 있으면 꼭 지적해주시고 많이 부족해도 너그러이 봐주시길 바랍니다 !

HTTP의 특징

  1. stateless
    상태 정보를 유지하지 않습니다

  2. connectionless
    클라이언트가 서버에 요청을 했을 때 그에 맞는 응답을 보낸 후 연결을 끊습니다.

그러나 실제로는 데이터 유지가 필요한 경우가 많습니다. 특히 로그인이 유지되어야 할 때!
상태 정보의 저장 위치에 따라 쿠키, 세션으로 나뉩니다.



쿠키(Cookie)

사용자의 브라우저에 저장되고 통신할 때 HTTP 통신 시 헤더에 포함되는 텍스트 데이터 파일입니다.
Key-Value 로 구성되어 있으며 이름, 값, 만료기간, 경로 정보가 있습니다.

쿠키 통신 방식

  1. 최초 통신 시 쿠키 값 없이 request
  2. 서버에서 클라이언트가 보낸 Request Header에 쿠키가 없음을 판별한 후 통신 상태를 저장한 쿠키를 Response
  3. 클라이언트의 브라우저에 쿠키를 생성/보존
  4. 두번째부터는 HTTP Header에 쿠키를 실어서 서버에 Request

쿠키 제약 조건

  • 총 300개의 쿠키 저장 가능
  • 하나의 도메인 당 20개의 쿠키를 저장할 수 있으며 그 이상이 될 경우에는 적게 사용되는 것부터 삭제
  • 하나의 쿠키는 4KB(4096byte) 저장 가

쿠키 사용 예시

자동 로그인 유지, 장바구니, 팝업 보지 않기 등



세션(Session)

서버에 저장되는 쿠키라고 생각하면 됩니다.
브라우저가 종료할 때 까지 유지되며 중요한 데이터를 저장할 때 사용합니다.
사용자 브라우저가 아닌 서버에 저장되는 것이기 때문에 보안성이 쿠키보다 상대적으로 높습니다.

세션 통신 방식

  1. 클라이언트가 서버에 접속 시, 세션 ID 발급
  2. 서버에서는 클라이언트로 발급해준 세션 ID 를 쿠키를 이용해서 저장
  3. 클라이언트는 다시 페이지에 접속할 때 쿠키에 저장된 세션 ID를 서버에 전달
  4. 서버는 Request Header에 쿠키 정보(세션 ID)로 클라이언트를 판별

세션 ID의 보안 취약점
세션 해킹 : 홈페이지 관리자의 세션 아이디를 탈취, 쿠키값을 관리자의 세션 아이디로 변경하여 관리자 권한으로 이용
예방법 : 세션에 로그인 했을 때의 IP를 저장하여 페이지 이동 시 마다 현재 IP와 세션 IP, 브라우저 정보 (UserAgent)가 같은지 검사 진행

사용하는 방식

로그인 정보 유지



캐시 (Cache)

브라우저를 사용하는 환경 (로컬)에 서버에서 받은 데이터를 저장하는 파일 (쿠키와 비슷)

쿠키와 비슷하지만 이미지나 css,js등 재사용되거나 용량이 큰 리소스를 임시 저장해두어 렌더링 속도를 돞이는 것이 목적이라 목적성이 다릅니다.

profile
Front-end developer
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 4월 15일

정리 감사합니다

답글 달기