HTTP(Hypertext Transfer Protocol)는 비 연결성(Connectionless)과 비 상태성(Stateless)의 특징을 가지고 있다.
이에 따라 사용자를 식별하려는 보완 사항으로 쿠키와 세션을 사용한다.
웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일이다.
쿠키의 데이터 형태는 Key와 Value로 구성되고 String 형태로 이루어져 있다.
사용자를 식별하는 용도로 사용한다.
쿠키는 서버를 대신해서 이러한 정보들을 웹 브라우저에 저장(정확히는, 웹 브라우저를 이용하고 있는 컴퓨터에 저장)하고
사용자가 요청할 때 그 정보를 함께 보내서 서버가 사용자를 식별할 수 있게 한다.
1.세션 관리(Session Management) 로그인, 사용자 닉네임, 접속 시간, 장바구니 등의 서버가 알아야 할 정보들을 저장한다.
2.개인화(Personalization) 사용자마다 다르게 그 사람에 적절한 페이지를 보여줄 수 있다.
3.트래킹(Tracking) 사용자의 행동과 패턴을 분석하고 기록한다.
방문했던 웹 사이트에 대한 정보 및 개인정보가 기록되기 때문에 사생활을 침해할 소지가 있으며, 이를 해소하기 위해서 웹 브라우저 자체에 쿠키 거부 기능이 있다.
이러한 쿠키에 대한 거부가 웹 브라우저에 설정되어 있으면, 쿠키 본래의 목적인 웹 브라우저와의 연결을 지속하는 기능을 수행할 수 없는 경우가 발생한다.
서버가 가지고 있는 것이 아니라 사용자에게 저장되기 때문에, 임의로 고치거나 지울 수 있고 가로채기도 쉬워 보안이 취약하다.
따라서, 쿠키에는 민감하거나 중요한 정보를 담는 것은 위험하다.
웹 브라우저당 1개씩 생성되어 웹 컨테이너에 저장되며 브라우저 종료 시 소멸한다.
로그인과 로그아웃, 또는 설정 시간 동안 반응이 없을 시에 무효화 된다.
- 서버에서는 사용자로부터 요청이 있을 때 사용자를 구분하기 위한 임시쿠키 하나를 보낸다.
- 저장된 쿠키는 웹 브라우저의 쿠키저장소에 저장된다.
- 이후 같은 사이트의 서버를 방문할 때마다, 저장된 쿠키를 요청할 header에 담아 함께 다시 서버로 전송한다.
- 서버는 전송받은 쿠키와 서버에 저장된 사용자 정보를 비교하여 사용자를 확인한다.
정보를 세션에 담아두면 요청이 있을 때마다 DB에 접근할 필요가 없어서 효율적이다.
더보기
출처