쿠키(cookie)
웹브라우저가 동작하고 있는 로컬시스템에 존재하는 하드디스크 영역 중 아주 작은 공간을 할당하여 이 곳에 웹서버와 지속적인 통신하는데 필요한 정보를 저장하게 되는데 이 곳에 저장된 정보를 쿠키라고 합니다. 이러한 쿠키는 name=value 형태의 단순한 텍스트 파일이기 때문에 실행되지 않으며 따라서 바이러스를 심는 것과 같은 동작은 절대 할 수 없습니다. 보통 웹사이트 방문객에 대한 정보를 저장하기 위해서 사용됩니다.
쿠키의 동작
< 쿠키의 동작 >
① 쿠키 기반의 웹문서 접근(URL 실행 요청)
쿠키를 보내주는 웹문서의 실행을 요청합니다.
② 브라우저에 쿠키 저장
웹프로그램은 브라우저에 해당 URL에 대해 쿠키의 NAME/VALUE값과 여러가지 정보들을 함께 전달합니다. 서버에서 클라이언트로 쿠키 정보를 보낼 때는 HTTP 응답헤더를 통해 보내게 됩니다. HTTP 응답헤더를 통해 브라우저로 전달된 쿠키는 쿠키명 및 값의 바이트수와 유효기간, 유효경로, 유효도메인 등을 확인한 후 사용자의 하드디스크 또는 메모리에 저장됩니다.
③ 지정된 URL에 대해 쿠키 전달
저장된 쿠키는 웹브라우저가 쿠키에 지정된 조건에 맞는 URL을 요청할 때, 쿠키에 대한 정보를 다시 서버에 보냅니다. 클라이언트에서 서버로 쿠키 정보를 보낼 때는 HTTP 요구헤더를 통해 웹서버로 전달됩니다. HTTP 요구헤더를 통해 웹서버로 전달된 쿠키는 HTTP_COOKIE라는 환경변수를 통해 CGI 프로그램으로 전달됩니다.
쿠키정보의 저장
브라우저가 웹서버로부터 쿠키 정보를 전달받으면, 이 정보들의 유효기간을 살펴 유효기간이 있는 쿠키는 쿠키 파일에 저장하고, 그렇지 않은 쿠키는 임시 버퍼 영역(메모리)에 저장합니다.
쿠키 파일에 저장된 쿠키 정보는 웹브라우저를 종료하더라도 다음에 다시 웹브라우저가 기동될 때 쿠키 파일의 내용이 메모리로 올려서 그 정보를 계속 사용할 수 있도록 합니다.
웹브라우저의 종료와 관계없이 지속적으로 유지되는 쿠키가 사용되는 경우 - 파일에 저장되는 경우 - 를 보면 제가 사용하고 있는 제로보드를 사용해 보면 됩니다. 제로보드 게시판에서 글쓰기를 하게 되면 최초에 입력하였던 NAME, E-MAIL, Homepage 내용이 다음 번에 다른 내용으로 글쓰기를 하려고 하면 자동으로 해당 필드가 채워져 있는 것을 볼 수 있을 것입니다. 이것은 최초에 글쓰기를 할 때(최초가 아닐 때도 마찬가지이지만) 입력하였던 필드값을 사용자 시스템에 쿠키로 저장시켜 놓았기 때문에 가능한 것입니다. 이러한 활용은 쿠키가 아니면 구현하기가 어렵겠죠. 동일한 로컬시스템으로 여러 사용자가 같이 사용하는 경우라면 오히려 불편할 수 있는, 때에 따라서는 위험하기도 한 기능이지만 한 사용자만 사용되는 로컬시스템에서 사용하기에는 아주 편한 기능이 될 것입니다.
반면에 메모리에 임시 저장되는 쿠키는 웹브라우저가 계속 살아있을 때만 쿠키값을 유지하게 되는 것입니다. 이러한 쿠키들은 웹브라우저의 종료와 함께 없어져야 하는 값들을 정의할 때 - 예를 들어 로그인할 때 작성된 회원ID 및 관련 정보들 - 유용하게 써먹을 수 있겠지요.
웹서버마다 독립적으로 동작되는 쿠키파일
이와 같이 서버는 웹브라우저의 쿠키에 특정 정보를 저장할 수 있으며, 일단 저장된 정보는 필요한 경우 언제든지 참조할 수 있습니다. 이러한 쿠키값은 각 서버 별로 독립적으로 유지관리되기 때문에 쿠키를 생성한 서버에서만 그 쿠키를 참조할 수 있으며 다른 서버에서는 이를 전혀 다룰 수 없습니다. 또한 쿠키는 웹브라우저를 통해 모든 쿠키 정보를 읽고 쓰고 삭제하게 됩니다. 이와 같은 쿠키에서 차지하는 웹브라우저의 엄청난 영향력으로 말미암아 브라우저 버전에 따라 버그로 인해 로컬시스템의 보안 문제가 발생한 적도 있습니다.
< 웹서버와 브라우저 쿠키파일의 관계 >
쿠키의 유용성
이전에 한번 입력하였던 정보를 웹브라우저가 기억하고 있다가 다음 번에 사용자가 웹 페이지를 다시 방문하면 기억하고 있는 정보를 가지고 웹페이지를 구성하기 때문에 사용자가 똑같은 정보를 다시 입력할 필요가 없습니다. 기껏해야 암호정도만 입력받아 필요한 서비스를 제공할 수 있습니다. 시간을 절약할 뿐만 아니라 사용자 확인을 위한 번거로움을 최소화할 수 있습니다.
사용자가 이전에 제공받았던 서비스를 분석하여 그 정보를 기초로 서버에서 보낼 웹 페이지를 구성하게 되면 사용자 구미에 맞는 정보를 제공할 수 있습니다. 예를 들어 사용자가 이전에 증권정보를 주로 검색하였다면 이와 관련된 정보를 첫페이지에 포함시켜 사용자에게 제공할 수도 있겠지요. 아니면 다른 광고에 앞서 증권 관련 광고를 먼저 표시할 수도 있겠지요. 이와 같이 사용자가 보고 싶어하는 정보를 빠르고 쉽게 접근할 수 있도록 하는 것이 중요하지 않을 까요?
쿠키가 사용자의 로컬시스템에 저장되므로 웹서버쪽에서 별도로 사용자 정보를 관리할 필요가 없다는 장점이 있기는 하지만 사용자가 임의로 이 파일을 삭제할 수 있으므로 서버 입장에서는 지속적으로 유지하여야 하는 사용자 정보를 담아두기에는 부적합하며 단지 일시적인 정보나 아니면 사용자의 허락하에 사용할 수 있는 정보를 저장하는 경우에 유용하게 사용할 수 있을 것입니다. 또 하나 사용자가 웹브라우저의 쿠키 동작을 꺼버릴 수도 있기 때문에 이 때는 서버에서 쿠키를 전혀 사용할 수 없게 됩니다. 따라서 이런 경우를 대비하여 웹사이트를 개발할 필요가 있습니다.
쿠키의 활용
회원인증
쿠키에 사용자 아이디와 암호를 넣어서 자신의 웹을 방문하는 사람들이 방문할 때마다 사용자 아이디와 암호를 넣지 않아도 되게 하는 것입니다. 물론 처음 한번은 해야겠지요.
카운터
쿠키를 이용하면 한 방문자에 대하여 페이지 히트수에 관계없이 단 한번만 카운트할 수 있도록 하는 카운터를 어렵지 않게 만들 수 있습니다.
장바구니
인터넷 쇼핑몰에서 사용자가 선택하는 물건들을 쿠키에 담아둘 수 있습니다. 물건 선택을 끝내고 구매할 때 쿠키에 저장된 물품 목록에 의해 비용 처리를 하게 됩니다.
알림창 표시
웹사이트에 들어온 방문자에게 알려야 하는 중요한 정보를 별도의 창을 이용하여 표시하는 경우가 많이 있습니다. 방문자에게 소식을 전하기에는 편하지만 방문자 입장에서는 웹사이트를 방문할 때마다 알림창을 계속 보아야 하는 것은 짜증나는 일입니다. 이럴 때 알림창에 체크 박스를 두어 다음부터는 창을 띄우지 않을 수 있도록 방문자가 선택할 수 있게 합니다. 체크 박스에 대한 정보를 쿠키에 담아 두면 현재 방문자는 알림창을 다시 볼 필요가 없겠지요
쿠키의 장단점
쿠키의 장점
쿠키의 가장 강력한 특징 중의 하나는 상태 유지에 있습니다. 쿠키가 사용자의 브라우저에 설정되고 나면 이 값은 특별한 일이 없으면(?) 결코 없어지지 않습니다. 이것은 사용자 설정이나 방문 정보를 쉽게 저장 할 수 있도록 해주며 사용자가 다시 사이트를 방문할 때 이 정보를 사용할 수 있도록 해줍니다.
쿠키의 단점
강력한 상태관리를 지원하는 장점을 가진 쿠키이지만 많은 브라우저가 쿠키 정보를 암호화 되지 않은 형태로 보관하기 때문에 패스워드와 같은 민감한 정보들을 쿠키에 저장할수 없다는 단점을 갖습니다. 사용자의 컴퓨터에 접근할 수 있는 누구라도 이러한 민감한 정보를 쉽게 얻을 수 있기 때문입니다.
브라우저가 허용하는 쿠키 파일의 크기나 수량이 제한되기도 하고, 브라우저의 동작 매커니즘에 따라 새로운 쿠키가 오래된 쿠키를 덮어쓰기도 합니다. 또한 쿠키 파일의 구조는 브라우저에 따라 다르기 때문에 여러 브라우저가 하나의 쿠키 파일을 공유할 수 없습니다.

'phpsource > 캐시&세션&쿠키' 카테고리의 다른 글

{쿠커}3.보안  (0) 2001.02.20
{쿠커}2.웹페이지 상태유지  (0) 2001.02.20
{세션핸들러}3.업그레이드 및 패치  (0) 2001.02.02
{세션핸들러}2.사용방법  (0) 2001.02.02
{세션핸들러}1.개요  (0) 2001.02.02
Posted by 방글24