Cookie & Session
HTTP 프로토콜(protocol)은 비 연결 지향적인 프로토콜로 클라이언트(Client)와 서버(Server)가 서로를 인지 할 수 없는 구조이다. 즉, HTTP 프로토콜은 사용자가 웹 애플리케이션에 특정 자원을 요청할 때 개별 사용자를 구분할 수 있는 메커니즘을 가지고 있지 않다.더불어 요청과 응답을 바탕으로 되어 있고,일정 시간이 지나거나 클라이언트와 서버 중 하나가 서비스의 요청을 해제하면 연결이 종료되는 형태로 서비스를 제공한다.
이 특성상 두 대상이 서로를 인식하고 지속적으로 연결을 유지하기 바란다면 다음에 설명할 Cookie 와 Session 을 사용한다.
누가, 언제, 어디서, 무엇을, 왜, 어떻게
1. 쿠키(Cookie)
누가 : 클라이언트(Client)
언제 : 사용자 인증이 필요할 때
어디서 : 클라이언트 PC
무엇을 : 사용자 정보 저장
왜 : 편리하고 빠른 연결을 위해
어떻게 : 쿠키는 크게 두 가지 유형이 존재 한다.
세션 쿠키와 영구적 쿠키가 존재하는 데 쿠키에 만료일이 포함되지 않을 경우 해당 클라이언트의 메모리에 위치하게 된다.
브라우저를 닫고 연결을 해제하게 되면 쿠키의 값은 다시 사용될 수 없다.
영구적 쿠키는 쿠키에 만료일이 포함되어 있을 경우 물리 디스크에 저장이 되어 만료일이 되지 않는 이상 지속적으로 저장되어 있다. 그래서 HTTP 연결을 해제 하더라도 쿠키는 남아 있으며 재 연결시 다시 그 쿠키를 재사용 할 수 있다.
2.세션(Session)
누가 : 서버(Server)
언제 : 사용자 인증이 필요할 때
어디서 : 서버
무엇을 : 사용자 정보 저장
왜 : 편리하고 빠른 연결을 위해
어떻게 : 서버에 연결되는 클라이언트 중 인증 처리가 완료된 클라이언트에 한해서 세션ID를 발급한다.
각 클라이언트마다의 고유한 ID를 가지고 있다. 그래서 클라이언트가 서버간의 연결을 유지하려 한다면(세션 유지)
해당 ID에 대한 저장정보를 불러와 사용한다.
쿠키와 세션의 보안성 차이
쿠키는 클라이언트의 PC에 저장이 되어 해킹위험에 쉽게 노출된다. 하지만 세션정보는 서버에 저장이 되기 때문에 각 클라이언트의 해킹위험보다 낮다.