쿠키와 세션

2020. 2. 6. 21:23스터디/Network

쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 데이터 파일이다

쿠키에는 이름,값,만료날짜(쿠키 저장기간), 경로정보가 들어있다

따라서 쿠키는 일정시간동안 데이터를 저장할 수 있게 된다.

클라이언트에서는 이를 상태관리해서 사용한다, 로컬에 저장했다가 참조한다는 소리로, react 는 redux,

vue는 vuex에 넣고 관리하면 편하다

 

쿠키의 프로세스는 다음과 같다

1. 브라우저에서 웹페이지 접속

2. 클라이언트가 요청한 웹페이지를 받으면, 쿠키를 클라이언트 로컬에 저장(redux, vuex)

3. 클라이언트가 재요청시 웹페이지 요청과 함께 쿠키값도 전송

4. 지속적으로 로그인을 유지하여 http 통신의 문제점인 비연결지향(Connectionless)과 상태정보유지안함(Stateless)의 이슈 해결

 

쿠키의 제한사항은 클라이언테으 300개까지 저장이 가능하며, 하나의 도메인당 20개의 값만 가질 수 있으며, 하나의 쿠키값은 4KB까지 저장된다. Response Header에 Set-Cookie속성을 사용하면 구현이 가능

쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request 시에 Request Header를 넣어서 자동으로 서버에 전송한다

 

세션 역시 일정시간동안 같은 브라우저로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술이다

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

클라이언트가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는데 이것이 세션이다

 

세션의 프로세스는 다음과 같다

1. 클라이언트가 서버에 접속시 세션 ID 발급

2. 서버에서는 클라이언트로 발급해준 세션 ID를 쿠키를 사용해 저장

3. 클라이언트로 다시 접속할 때 이 쿠키를 이용해서 세션ID값을 서버에 전달

 

즉 세션을 구별하기 위해 ID가 별도로 필요해서 그 ID만 쿠키를 이용해 저장한다. 쿠키는 자동으로 서버로 Request Header로 전송되니 서버에서 세션ID에 따른 처리가 가능해진다. 예를 들어 게시판에 글을 작성할 때 작성 버튼을 누르면 세션에 있는 아이디를 참조해서 작성자를 지정하게 한다

 

쿠키와 세션의 차이에 대해 말해보자면, 저장 위치가 각각 로컬과 서버로 다르다. 보안 이슈는 쿠키는 로컬에 저장되어 데이터의 무결정 이슈가 생기거나 request가 가로채어질 우려가 있어 보안에 취약하지만, 세션은 쿠키를 이용해 세션ID만 저장한 후 그것으로 식별해서 서버에서 처리하므로 비교해보았을 때 보안성이 좋다

라이프사이클은 쿠키의 경우 만료시간이 있지만 파일로 저장되기 때문에 브라우저를 종료해도 계속해서 정보가 남는다. 또한 그 기간을 늘리면 더 오래 유지할 수 있다. 반면에 세션은 만료시간은 정할 수 있지만 브라우저가 종료되면 만료시간에 상관없이 삭제된다

속도는 쿠키가 정보가 로컬에 있기 때문에 속도가 빠르고 세션은 서버에 있기 때문에 거치는 단계가 더 많아서 비교적 느리다

 

세션만 사용하면 보안이 안정적인데 쿠키를 쓰는 이유는 세션의 경우 서버의 리소스를 사용하기 때문에 서버 속도 저하를 야기할 수 있다

 

'스터디 > Network' 카테고리의 다른 글

Dynamic Host Configuration Protocol(DHCP)  (0) 2020.02.08
Chapter 1 - Internetworking - 02  (0) 2020.01.26
Chapter 1 - Internetworking- 01  (0) 2020.01.25
CCNA INTRO  (0) 2020.01.24