15.Cookie


  웹의 기본 구조는 수많은 사용자에게 정보를 제공해주는 데 그 목적이 있었다.

  그래서, 일반적인 C/S시스템의 구조처럼 연결을 계속 유지하지 않는다. 단지 사용자가 요청하면 연결이 형성되고, 사용자가 원하는 정보가 모두 전송되면 연결이 종결되어 더 많은 사용자들에게 서비스 할 수 있도록 설계되어있다.( 앞에서도 이 얘기를 몇 번을 반복한거 같다. )

  그러나, 문제는 바로 여기에 있었다. 단순히 CGI입장에서 보면 특정한 요구가 Form Tag를 통해서 들어오게 되는데, 지금 이 요구를 하는 브라우저가 좀전에 덧셈을 해달라고 요청했던 브라우저인지, 아니면, 오늘 처음 이 웹서버로 접속한 사용자인지 전혀 알 수 없다는 점이다.

  앞에서도 봤지만, Form Tag로 들어오는 정보는 누가 쓰든지 동일한 형식으로 들어올 뿐이기 때문에 전혀 사용자를 구분할 수 가 없다.

  쇼핑몰을 구축한다고 했을 때를 가정해 보자. 분명히 사용자는 여기저기 돌아다니면서 장바구니에 이것저것을 담을 것이고, 맨 마지막에 한번만 지불하고자 할 것이다.

  그럼, 반대로 CGI입장에서 보자. 이 쇼핑몰에 3개의 CGI가 있다. 2개는 물건을 살 수 있는 것이고, 마지막 하나가 장바구니를 확인해서 돈을 받는 다고 하자. 자 그럼 문제는 2개의 CGI에서 물건을 샀는지 어떻게 알 수 있는가? 어딘가에 별도로 저장해서 어디에서 어떤 CGI가 호출되던간에 CGI간에 공유할 수 있는 부분이 필요하다.

  그래서 Cookie가 필요하다.

    다른 방법   물론 이 방식 말고도 form의 hidden Tag를 쓰거나, URL에 계속 넘겨주는 방식이 있다. hidden Tag를 쓰게 되면, 사용자가 임의로 변경할 수 있는 문제가 있으며, URL에 정보를 넘겨주는 방식으로 모든 CGI를 연결한다는 것은 거의 불가능하다.
  웹 서버와 브라우저간의 정보를 공유하는 것이 Cookie를 통해서 가능해 졌다. 이 쿠키는 브라우저에서 관리되고 저장되는 값이고, 웹서버쪽에서 활용하는 값이다.

  그럼 과연 브라우저는 쿠키를 어디에 저장될까? 당연히 파일에 저장된다.

  Explore를 쓰는 사람은 지금 windows 디렉토리를 열어서 Cookies라고 이름된 디렉토리 한번 열어보라. 여기 파일들 엄청많이 있을 것이다. 성인사이트에 갔던 사람들 금방 발각되는 시점이기도 하다. Navigator를 쓰는 사람은 해당 디렉토리에 cookies.txt라는 파일이 있다.

  이 Cookie파일을 보면 그간의 행적을 조금이나마 엿볼 수 있다.( 지우고 싶으시다? Explore의 경우는 파일을 그냥 지우면 되고, Netscape의 경우는 해당 라인을 지워주면 된다. )

  아무 파일이나 열어보면, 일정한 형식을 가지고 있기는 하지만, 암호화 되어 있어 무슨내용인지는 알 수가 없지만 대략 쿠키값은 name=value와 유효일, 디렉토리, 암호화여부등을 담고 있다. 여기내용을 잘 알필요까지는 없다.

    암호화된 쿠키   일반적으로 저장할 때 약간의 암호화 기법이 적용된다. 그러나, 문제는 암호화는 언젠가 복호화 즉, 암호가 깨질 수 있다는 점이다. 따라서, Cookie에 저장되는 값에는 비밀번호나 카드번호, 주민번호 같이 유출되면 안되는 정보들은 절대로 Cookie에 저장시키면 안된다.
  이제 다음 장에서 쿠키값에 대해서 보다 자세히 알아보자.

- Last Update : 2001.7.9 by Deadfire(http://www.deadfire.net)

CGI with C 활용
브라우저구분
환경변수LIST
클라이언트풀
서버푸쉬
Form Mail
진행현황보기
Cookie
MD5
File Download
SSI
Redirection
File Upload
GD1.2
Database
마치며

Copyright ⓒ 1997 ~, Deadfire Program Master