[기술] 쿠키와 세션의 차이

sihwan_e·2020년 7월 8일
11

웹에서 CooKie와 Session이란?

HTTP 프로토콜의 특징

비연결지향(Connectionless)/상태정보유지안함(Stateless)

1.비연결지향(connectionless)

HTTP는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 단발성의 특징이 있다.
((HTTP1.1 버젼부터는 연결을 계속 유지한채로 request에 재활용 하는 기능이 추가 됬다.기본적인 디폴트 값으로 header에 keep-alive라는 값이 주어진다.)

2.상태정보유지안함(stateless)

연결을 끊는 순간 클라이언트와 서버와의 통신이 끝나며 상태 정보는 유지하지 않는 특성

쿠키와 세션은 위의 두가지 특성을 보완하기 위해서 사용되기 시작했다.

비연결지향 특성으로 계속해서 통신 연결을 유지하지 않기 때문에 리소스 낭비가 줄어드는 것은 장점이지만 통신 할때마다 새로 연결을 해줘야 하기때문에 클라이언트는 그때마다 인증을 해주어야한다는 단점이 있다.
예를들면 쿠키와 세션을 사용하지 않으면 쇼핑몰에서 무언가를 구입하려고 로그인을 해도, 페이지를 이동할때마다 계속 로그인을 해주어야 한다.

쿠키(CooKie)

쿠키는 클라이언트 로컬에 저장되는 키와 밸류가 들어있는 저용량 데이터 파일이다.
쿠키에는 이름,값,만료날짜(쿠키 저장기간), 경로정보가 포함되있다.
쿠키는 일정시간동안만 데이터를 저장할 수있다. 그래서 로그인 상태유지 같은곳에서 쓰인다.
(은행같은곳은 그 텀이 더짧다 보안이 중요하므로)
쿠키는 클라이언트의 상태 정보를 로컬에 저장하였다가 참조한다.

프로세스

브라우저에서 웹페이지 접속>>클라이언트가 요청한 웹페이지를 받으면서 쿠키를 클라이언트의 로컬(하드)에 저장>>클라이언트가 재요청시 웹페이지 요청과 함꼐 쿠키값도 전송>>지속적으로 로그인 정보를 가지고 있는것처럼사용

쿠키의 한계

1.300개까지 만 저장가능, 하나의 도메인에 20개의 값만 보유가능, 하나의 쿠키값은 4KB까지만 저장
2.사용자의 요청없이도 브라우저가 request시에 request header을 넣어 자동으로 서버에 전달

세션(Session)

세션은 쿠키를 기반으로 하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리.
일정 시간동안 같은 브라우저로 부터 들어오는 요구를 하나의 상태로 보고 그 상태를 유지하는 것

다시말해 웹 브라우저를 통해 웹서버에 접속한 이후부터 그 브라우저를 종료 할떄까지 상태 유지

클라이언트가 request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 세션ID를 부여함.

프로세스

클라이언트는 서버접속시 세션 ID를 발급받음 >> 클라이언트는 세션ID에 대해 쿠키를 사용해서 저장하고 가지고 있음 >> 서버요청시에 이 쿠키의 세션ID를 서버에 전달하여 사용>>서버는 받은 세션ID로 세션의 클라이언트정보를 가져오고 서버요청을 처리하여 클라이언트에게 응답함.

> 쿠키와 세션의 차이(중요중요중요)

1.저장위치
쿠키 : 클라이언트에 파일로 저장
세션 : 서버에 저장

2.보안
쿠키 : 클라이언트 로컬에 저장되기 떄문에 변질되거나 request에서 스나이핑당할 우려가 있어서 보안 취약
세션 : 쿠키를 이용해서 세션id만 저장하고 그것으로 구분해서 서버에서 처리하기 떄문에 비교적 안전 (보안 면에서 쿠키보다 우수)

3.라이프 사이클(중요)
쿠키 : 만료시간은 있지만 파일로 저장되기 떄문에 브라우저를 종료해도 계속해서 정보가 남아 있을수 있음. 만료기간을 넉넉히 잡아두면 쿠키삭제 할 때까지 유지될수도 있음.
세션 : 만료기간을 정할수는 있지만 브라우저가 종료되면 그 에 상관없이 삭제됌.

4.속도
쿠키 : 쿠키에 정보가 있기 떄문에 서버에 요청시 속도가 빠르다.
세션 : 정보가 서버에 있기 떄문에 처리가 요구되어 비교적으로 느림

이렇게만보면 보안이나 편의성상 세션이 좋아보일수도 있지만, 쿠키가 사용되는 이유는 
세션은 서버의 자원을 사용하기 때문에 무분별하게 만들다 보면 서버의 메모리에 부담이 갈수있고 속도가 느려질수 있기 때문이다.

쿠키 사용 예

방문 사이트에서 로그인 시, "아이디와 비밀번호를 저장하시겠습니까?"
쇼핑몰의 장바구니 기능

세션의 사용 예

로그인과 같이 보안상 중요한 작업을 수행할 때 사용

덤으로 캐시는
캐시[Cache]란?
프로그램이 수행될 때 나타나는 지역성을 이용하여 메모리나 디스크에서 사용되었던 내용을 특별히 빠르게 접근할 수 있는 곳에
보관하고 관리함으로써 이 내용을 다시 필요로할 때 보다 빠르게 참조하도록 하는 것이다.
쉽게 풀어서 설명하면 사용되었던 데이터는 다시 사용되어 질 가능성이 높다는 개념을 이용한 것이다. 이를 통해서
다시 사용될 확률이 높은 아이들을 좀 더 빠르게 접근 가능한 저장소를 사용한다는 개념이다.

profile
Sometimes you gotta run before you can walk.

0개의 댓글