Web/php

쿠키와 세션이란

park_juyoung 2018. 10. 23. 13:56


쿠키와 세션에 대한 개념을 정리 하도록 하겠습니다.


쿠키와 세션이란?


쿠키와 세션은 http 프로토콜의 약점을 커버하기 위해서 존재합니다.


http 프로토콜은 Connectionless하고 Stateless하다라고 이야기합니다.


Connectionless: 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 response를 하고

서로 접속을 끊는 특성입니다.


Stateless: 접속을 끊는 순간 클라이언트와 서버의 통신은 긑나고 상태 정보는 유지되지 않는 특성입니다.


이 두가지 특성이 http의 장점이자 약점입니다.


장점은 통신을 유지하고 있을때 낭비되는 리소스를 줄인다는 것은 큰 장점이지만


동시에 약점이 존재 합니다.


약점은 통신을 할때마다 계속 내가 누구라는 인증을 계속해야합니다.


예를 들어 네이버에 로그인을 하고 서비스를 이용할때 서비스를 클릭해서 이동할때마다 로그인을 새로 다시 해야합니다.


이러한 문제점을 쿠키와 세션을 사용해서 해결합니다.


쿠키(Cookie)

- 쿠키는 클라이언트에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다.

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

- 쿠키는 일정 시간동안 데이터를 저장할 수 있어서 로그인 상태를 유지합니다.

- 쿠키는 클라이언트의 상태 정보를 본인 하드 디스크에 저장하였다가 필요할 때 참조, 재사용합니다.


쿠키의 원리

1) 클라이언트가 브라우저로 웹페이지 접속

2) 클라이언트가 요청한 웹페이지를 전송받으면서 쿠키(클라이언트의 상태정보)하드에 저장

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

4) 지속적으로 로그인 정보를 가지고 있는 것 처럼 사용


쿠키의 사용 예)

 -방문 사이트에서 아이디와 비밀번호를 저장하시겠습니까?라고 나타나는 것은 쿠키로 저장하겠냐라는 뜻이다.

-팝업이 나타날때 "오늘은 이창을 보지 않음"을 누르면 오늘 그창이 뜨지 않는 것.

- 쇼핑몰에서 장바구니같은 기능을 사용하는 경우 저장형태가 쿠키이다.


쿠키 제약 조건

-클라이언트에 총 300개까지 쿠기를 저장할수 있따.

-하나의 도메인당 20개의 값만 가질수 있다. (20개 초과시 가장 적게 참조된 쿠기가 지워짐)

- 하나의 쿠키 값은 4MB까지 저장 가능


Response Header의 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있다.


쿠키는 사용자가 요청하지 않아도 브라우저는 Request시에 Request Header에 넣어서 알아서 서버에 전송합니다.



세션(Session)

-세션은 클라이언트와 웹서버 간 네트워크 연결이 지속 유지되고 있는 상태를 말합니다.

- 즉, 사용자가 브라우저를 열어 서버에 접속한 뒤 접속을 종료할 때 시점 까지를 말합니다.

- HTTP 프로토콜은 비접속형 프로토콜이므로, 매 접속시마다 새로운 네트워크 연결이 이루어지는데, 세션이 연결 유지를 가능하게 해줍니다.

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

- 세션 ID는 임시로 저장하여 페이지 이동 시 이용하거나,클라이언트가 재 접속 했을 때 클라이언트를 유일하게 구분하는 수단이 됩니다.


세션의 원리 

1) 세션 ID를 서버에서 클라이언트가 다시 웹사이트에 접속시 발급해 준다.

2) 서버에서 클라이언트로 발급해준 세션 ID를 쿠키를 사용해서 저장합니다.(쿠키 이름은 JSEEIONID)

3) 클라이언트는 다시 접속시, 이 쿠키(JSEEIONID)를 이용해서 세션 ID값을 서버에 전달합니다.


세션의 장점

 - 각 클라이언트에게 고유 ID를 부여합니다. 

 - 세션 ID로 클라이언트를 구분해서 클라이언트의 요구에 맞는 서비스를 제공할 수 있습니다.

 - 사용했던 정보들을 서버에 저장하기 때문에 보안 면에서 쿠키보다 우수합니다.

 

세션의 단점

- 서버에 저장되는 세션 때문에 서버에 처리를 요구하는 부하와 저장 공간을 필요로 한다.


세션의 사용 예

 - 로그인과 같이 보안상 중요한 작업은 세션을 통해서 작동합니다.


쿠키와 세션의 차이점


쿠키와 세션은 비슷한 역활을 합니다. 동작원리 또한 비슷 합니다. 왜냐하면 세션도 결국 쿠키로 저장해서 사용하기 때문입ㅈ니다.


그러나 큰 차이점은 저장되는 위치 입니다.


쿠키는 클라이언트에 저장되어서 보내는 역활을 하고,


세션은 서버에 저장되어서 클라이언트에게 알려줘서 사용 합니다.


쿠키는 서버의 자원을 전혀 사용하지 않습니다. 클라이언트 단에서 저장을 해서 사용하기 때문입니다.


세션은 서버에 저장되어서 그 고유한 ID를 가지고 있습니다. 그래서 서버의 자원을 사용합니다.


쿠키와 세션은 서버의 자원을 사용할 수가 있습니다. 쿠키와 세션의 만료되는 기간되 다릅니다.


쿠키는 클라이언트에 저장되어서 서버에 요청시 빠른 속도를 냅니다.


세션은 서버에 정보가 있기 때문에 서버의 처리가 필요해서 쿠키보다 느린 속도를 냅니다.