본문 바로가기
Programming/Web

Cookie와 그를 보완한 Session

by Chan_찬 2011. 1. 25.
728x90
반응형
PHP 에서 가장 많이 사용되고 흔이 접하는게 Session 입니다. 오늘은 Session 에 대해서 이야기 해보도록 하겠습니다.HTTP 는 클라이언트(사용자)가 접속한것을 확인을 할수 있는 방법은 없습니다. 왜냐 하면 HTTP 1번 데이터를 전송하고 연결이 종료가 되는 형태의 프로토콜입니다. 지속적인 연결이 아니라는 것이죠 , 그래서 사용자를 구별하기 위해서 Cookie를 사용했습니다. Cookie 는 사용자 브라우저에 저장을 하는 방식입니다. 

Cookie의 저장 방식
Cookie 는 서버 Response 헤더에 Set-Cookie 값에 따라 브라우저가 로컬 저장소에 값을 저장하는 방식입니다. 특정 값을 클라이언트에 저장을 하고 다음 요청때 다시 그 값을 Request 헤더에 담아 전송을 하여 "내가 누구고 값은 어떤것을 가지고 있다" 라고 서버에 다시 알려주는 형태입니다. 그런데 이 방식에서 약간의 문제점이 있었습니다. 물론 개발 하는 사람이 Cookie에 사용자에 대한 개인정보를 담아 전송을 하면 브라우저는 그 개인정보를 컴퓨터에 저장한다라는 것이죠 이 과정에서 저장된 Cookie값을 가로채 소중한 개인정보를 다른사람이 알아 차릴수 있다는 점에서 Cookie는 문제점이 발견되었습니다. 그래서 새롭게 Session 이라는 것이 생겨난것입니다. 

Session 의 저장 방식
Session 은 Cookie와 동일하게 HTTP 서버에서 클라이언트(사용자)를 알아볼수 있는 방법(도구) 입니다. Session은 사용자를 식별 할수 있는 최소한의 Cookie값을 브라우저에 보냅니다. 이것은 Session ID라는 값이죠 웹 서핑을 하다보면 브라우저 주소창에 sessionid=... 형태의 값이 바로 Session ID 입니다. 물론 전부 동일한 이름을 가지는 것은 아니고 형태 또한 매우 불규칙 할 수 있습니다. 이 세션 아이디는 브라우저에서 서버에 간단하게 값을 던지고 HTTP 서버는 그 값을 이용해 서버에 값이 저장됩니다. 이 방식을 사용하면 클라이언트 측 Cookie를 누가 본다고 해도 전혀 어떤 내용인지 알수가 없죠, 서버에만 값을 저장하기 때문입니다. ^^

Session 의 동작 순서
Session동작 순서에 대해서 알아보겠습니다. (간단하게 브라우저와 HTTP 서버 사이에 동작입니다.)

1. 클라이언트가 서버에 접속을 시도 합니다. 
2. 서버는 클라이언트가 세션 아이디를 보내왔는지 확인합니다. 
3. 세션 아이디가 없다면 세션 아이디를 생성 하여 Respons Header 의 Set-Cookie: 를 통해 보냅니다. 
4. 클라이언트는 서버에서 받은 Set-Cookie: 을 클라이언트 PC에 저장합니다. 
5. 서버는 Session ID에 해당하는 파일, 메모리 , 또는 특정 방법으로 사용자 데이터를 저장,이용합니다. 
6. 클라이언트가 접속을 종료하거나, Session ID를 담고 있는 Cookie를 제거 한다면 서버에도 삭제를 합니다. 

한 사이트를 지속적으로 이용을 할때 1~5를 반복적으로 수행합니다. 

위 방법으로 Session 을 이용하는 것입니다. 최소한의 값으로 클라이언트를 식별할 수 있는 것이죠~

출처 : http://www.lovelgw.com/Blog/243
728x90
728x90
BIG
Buy me a coffeeBuy me a coffee

댓글