본문 바로가기
WEB

[WEB] Cookie와 Session으로 HTTP의 비연결성, 비상태성 보완하기

by 2__50 2020. 8. 19.

HTTP의 비연결성, 비상태성이 뭐길래

HTTP 는 인터넷에서 server 와 client 가 어떻게 서로 데이터를 주고받을지를 정해 놓은 규칙( Protocol )이다. 이 Protocol 은 server 의 자원을 절약하기 위해 server 와 client 의 연결 상태를 유지하지 않고, 연결 해제 후에도 상태 정보를 저장하지 않는다. 즉, 모든 사용자의 요청마다 연결과 해제를 반복하는데, 이러한 HTTP의 특성을 비연결성 ( Connectionless ),  비상태성( Stateless )이라 한다.

 

Connectionless 와 Stateless 덕분에 server의 자원은 많이 절약되지만, 같은 사용자가 여러 번 요청한 것을 매번 새로운 사용자로 인식하기 때문에, 페이지가 바뀔 때마다 계속 로그인을 해야 한다거나 장바구니에 담은 상품이 사라지는 등 치명적인 부작용이 발생한다. 이런 부작용을 보완하여 server 가 client 를 식별하게 해주는 것이 바로 Cookie와 Session이다.

출처: https://dalkomit.tistory.com/134


Cookie 와 Session

 

  Cookie Session
저장 위치 client ( 접속자 컴퓨터) server
저장 형식 string( Key-Value 형식 ) object
라이프 사이클 로컬에 파일 형식으로 저장되기 때문에 브라우저가 종료돼도 데이터가 남아 있다. 만료 시간을 설정해 삭제할 수 있다. 만료 시간을 정할 수 있지만 브라우저가 종료되면 만료시간에 상관 없이 삭제된다.
유효 기간 -  Cookie 저장 시 설정한다. 유효기간이 지나지 않으면 자동으로 삭제되지 않는다.

-  default 는 브라우저 종료시 소멸
-  설정에 따라 다르다.
-  default 는 브라우저 종료시 소멸
자원(리소스) client 의 자원 사용 server 의 자원 사용
보안 -  client 로컬에 저장되기에 임의로 고치거나 지울 수 있다.

-  server 에 요청을 보내는 중 탈취 당하는 등 보안에 취약하다.
-  유출되지 않아야 하는 정보를 Session id 로 대체하여 server에 저장하고, 해당 id 를 이용해 기존의 데이터에 접근 하기 때문에 보안성이 높다.

외부에서 Session 정보를 열람해도 개인 로그인 정보와 매칭이 불가능하다.

속도 로컬에 저장된 파일에 바로 접근하기 때문에 속도가 빠르다. server 에 접근하여 데이터를 취득하는 방식이므로 속도가 느리다.
용량 제한 도메인 하나당 20개, Cookie 하나당 4KB, 총 300개 server 가 허용하는 한 제한이 없다.
사용처 - ID 저장하기
-  오늘 하루 다시보지 않기
-  최근 검색 상품 / 사용 시간 기록
-  화면이 이동해도 로그인 상태 유지.
( 로그아웃 전까지 )
- 장바구니에 담기

 


Cookie

browser가 사용자( client )의 컴퓨터에 저장해두고 사용자의 요청 시 참조하고 재사용하는 작고 귀여운 기록 정보 파일이다. Cookie 가 저장되면 이 후 사용자 요청하는 데이터에 대해서는 헤더에 Cookie 를 실은 상태로 server  보내기 때문에 매번 다시 인증할 필요가 없다.

 

이러한 편리함도 있지만, Cookie결국 방문한 웹 사이트에 대한 정보 및 개인정보의 기록이기 때문에 browser Cookie 거부 설정을 두고 사생활 침해를 방지한다. 대신 Cookie 거부 설정을 하면 본래의 목적인 browser 와의 지속적인 연결을 수행할 수 없다.

 

출처: https://backback.tistory.com/326

 

 

[ Cookie 의 구성요소 ]
  • key : 각각의 Cookie를 구별하는 데 사용되는 이름
  • value : Cookie의 이름과 관련된 값
  • 만료일: Cookie의 유지시간
  • 도메인 : Cookie를 전송할 도메인
  • 경로 : Cookie를 전송할 요청 경로

 


Session

 

출처: https://velog.io/@junhok82/%EB%A1%9C%EA%B7%B8%EC%9D%B8%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9D%B4%EB%A3%A8%EC%96%B4%EC%A7%88%EA%B9%8CCookie-Session

 

Session 을 사용하면, 사용자가 웹 server 에 접속한 시점부터 broswer 를 종료하여 연결을 끝내는 시점까지 같은 broswer (사용자)로부터 들어오는 요구를 하나의 상태로 간주해 그 상태를 일정하게 유지시킨다.browser  하나의 Session id 가 생성되기에 broswer 가 다르면 ( ex. 크롬, 파이어폭스) 다른 사용자로 인식한다.

 

생성된 Session id는 browser의 웹 컨테이너에 저장되며, 이 후의 인증에 대해서는 client Cookie  저장돼 있는 Session id 를 server 측에 보낸다. 아이디, 닉네임 등의 정보를 Session  담아두면 요청이 있을 때 마다, DB에 접근할 필요가 없어 효율적이다. Session id는 브라우저 종료시 소멸한다.

 

Cookie  기반으로 하고 있지만 client 의 컴퓨터가 아닌 server 에서 사용자의 정보 파일을 관리해 안이 우수하다. 그러나 사용자가 많을 경우 server 자원의 소모가 커지기 때문에 Cookie 와 Session 를 적절히 병행해 사용하는 것이 효율적이다.

 

 

 

 

 

도움을 준 정보들

 

칼럼:

https://namu.wiki/w/HTTP

 

HTTP - 나무위키

HTTP에서 지원하는 요청 메시지는 다음과 같다. GET: 클라이언트가 서버에게 URL에 해당하는 자료의 전송을 요청한다.HEAD: GET 요청으로 반환될 데이터 중 헤더 부분에 해당하는 데이터만 요청한다.P

namu.wiki

https://helloinyong.tistory.com/97

 

[2019.05.01] cookie와 session의 차이

서버와 그 서버를 이용하는 클라이언트 내에서 사용되는 저장데이터인 쿠키와 세션에 대해 정리해보려고 한다. # 라이프사이클 쿠키 : 로컬에 파일 형식으로 저장이 되기때문에 브라우저가 종��

helloinyong.tistory.com

https://velog.io/@junhok82/%EB%A1%9C%EA%B7%B8%EC%9D%B8%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9D%B4%EB%A3%A8%EC%96%B4%EC%A7%88%EA%B9%8CCookie-Session

 

로그인은 어떻게 이루어질까❓(Cookie, Session)

로그인은 웹을 공부하다보면 가장 먼저 만나는 부분일 수도 있다. 그만큼 기본적이며 자주사용되는 것이라 판단되어진다. 당시에는 단순히 '구현'에만 신경을 썼다면, 웹 서비스를 이용할때 왜

velog.io

https://medium.com/@cute_mustard_sardine_17/%EC%BF%A0%ED%82%A4-cookie-%EC%84%B8%EC%85%98-session-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC-e8a974d76df8

 

쿠키(Cookie), 세션(Session) 에 대하여

트렐로와 같은 일정 관리 프로젝트를 시작한 지 3주 정도의 시간이 지났고, 애초에 계획하였던 기능을 모두 구현할 수 있었습니다. 프로젝트 전반에 관련한 포스팅은 별도로 올리도록 하겠습니�

medium.com

https://hahahoho5915.tistory.com/32

 

쿠키(Cookie), 세션(Session) 특징 및 차이

개요  > 쿠키(Cookie), 세션(Session) 각각 특성 및 차이 확실히 분류하기 메모 1. 공통점 : 웹 통신간 유지하려는 정보(ex:로그인 정보 등)를 저장하기 위해 사용하는 것(?) 2. 차이점 : 저장위치, 저��

hahahoho5915.tistory.com

https://devuna.tistory.com/23

 

[web] 쿠키(cookie)와 세션(session)의 개념/차이/용도/작동방식

[web] 쿠키(cookie)와 세션(session)의 개념/차이/용도/작동 쿠키와 세션을 이해하기 위해서는 먼저 http의 특징에 대해 이해하면 도움이 됩니다. 비연결성(Connectionless) HTTP(Hypertext Transfer Protocol..

devuna.tistory.com

https://velog.io/@aaronddy/%EC%BF%A0%ED%82%A4%EC%99%80-%EC%84%B8%EC%85%98-cookie-session

 

쿠키와 세션, cookie & session

웹에서는 클라이언트(브라우저)와 서버 간에 데이터를 주고 받기 위한 방식으로 요청/응답 프로토콜을 사용하고 있다. 프로토콜이란 컴퓨터나 원거리 통신 장비 사이에서 메시지, 데이터를 주��

velog.io

https://interconnection.tistory.com/74

 

쿠키와 세션 개념

쿠키와 세션은 개발자 말고도 인터넷 사용자라면 누구나 많이 들어본 단어입니다. 하지만 개념에 대해서는 많은 사람들이 헷갈려 하기에 쉽고 간단하게 정리해보려고 합니다. 일�

interconnection.tistory.com

https://cjh5414.github.io/cookie-and-session/

 

쿠키(Cookie)와 세션(Session) & 로그인 동작 방법

Jihun's Development Blog

cjh5414.github.io

https://sdevstudy.tistory.com/27

 

[Network] 쿠키(Cookie)와 세션(Session)의 차이

INTRO 서버와 클라이언트가 통신을 할 때 통신이 연속적으로 이어지지 않고 한 번 통신이 되면 끊어진다. 따라서 서버는 클라이언트가 누구인지 계속 인증을 해주어야 한다. 하지만 그것은 매우 �

sdevstudy.tistory.com

https://tansfil.tistory.com/58

 

쉽게 알아보는 서버 인증 1편(세션/쿠키 , JWT)

앱 개발을 처음 배우게 됐을 때, 각종 화면을 디자인해보면서 프론트엔드 개발에 큰 흥미가 생겼습니다. 한때 프론트엔드 개발자를 꿈꾸기도 했었죠(현실은 ...) 그러나 서버와 통신을 처음 배��

tansfil.tistory.com

 

댓글