쿠키

최대한·2021년 9월 25일
2
post-thumbnail
post-custom-banner

안녕하세요! 반갑습니다. 최대한이라고 합니다.
이제부터 열심히 한번 살아보겠습니다.

시작-!

쿠키... 캐시...
수업 시간에 분명 배웠는데 아직 헷갈리네요. 분발해야겠어요.

쿠키의 개념을 보기에 앞서 HTTP의 특징을 간단히 짚고 넘어가야할 것 같네요!

HTTP(HyperText Transfer Protocol)은 Text 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜입니다.

  • HTTP의 특징
  1. Connectionless (비연결성) - 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 서버가 응답을 마치면 클라이언트와 연결을 끊습니다.

  2. Stateless (상태없음) - 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식.
    서버와 클라이언트가 요청과 응답을 주고 받고 이후 서버에 동일한 클라이언트로 부터의 요청이 와도 서버는 클라이언트를 식별할 수 없습니다. (못 알아봄)

-> HTTP는 Stateless를 해결하기 위해서 브라우저에 Cookie를 저장하여 서버가 클라이언트를 식별할 수 있도록 합니다!

이제 쿠키에 대해서 알아봅시다.

  • 쿠키 Cookie
    : 사용자가 특정 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 사용자의 컴퓨터에 설치되는 기록 정보 파일.

음, 「사이트를 방문하고 이용할 때 컴퓨터(브라우저)에 저장되는 내용」이라고 할 수 있을 것 같습니다.

  • 쿠키 통신 방법
  1. 최초 통신에서는 쿠키가 없으므로 일단 클라이언트는 Request 요청을 보냅니다.
  2. 서버는 클라이언트의 Request Header에 쿠키 부분이 공백임을 확인. 사용자 정보(ID, 비밀번호, 방문일시 등)를 저장한 쿠키를 공백란에 담아 클라이언트에 Response 응답.
  3. 클라이언트의 브라우저가 서버로 부터 받은 쿠키를 생성 및 보존.
  4. 이후 클라이언트는 서버와 연결할 때 HTTP Header에 쿠키를 담아 Request 요청. 이후 서버는 쿠키를 통해 클라이언트를 식별 가능.
  • 쿠키의 목적
  1. 세션 관리 (Session Management): 로그인, 사용자 이름, 접속 시간, 장바구니 등의 서버가 알아야할 정보를 저장.
  2. 개인화 (Personalization): 사용자마다 관심분야가 모두 다르기에, 각 사용자에게 적절한 페이지를 보여주기 위함.
  3. 트래킹 (Tracking): 사용자의 행동과 패턴을 분석하기 위함.

// 얼마전에 요즘 날씨가 쌀쌀해진 탓에 쇼핑몰에 후드티를 검색했더니 이후 SNS에 후드티 광고를 많이 보여주더군요. 이것도 쿠키가 한 몫 했나봅니다! 하하

  • 쿠키 사용 예시 (자동 로그인)

우리가 Chrome을 통해서 웹사이트 '네이버'에 로그인을 한번 하면 이후 자동 로그인(네이버 사이트 내에서 페이지 이동 시마다 로그인 갱신)이 가능한 것을 볼 수 있습니다.

초기 로그인 시 네이버가 우리의 id와 password를 (데이터베이스에서 찾는다면? ps. DB는 아직 많은 공부가 필요합니다..) 확인한 후 로그인을 시켜줍니다. 그 때 우리의 Chrome 브라우저에 (예시로) id: choikorea, password: pilseungkorea를 입력해서 접속했다는 기록이 남게되고, 이후 Chrome은 네이버 웹페이지에 접속할 때 마다 이 기록으로 자동 로그인을 시켜줄 수 있습니다!

쿠키는 기록으로 남기에, Chrome 브라우저에 자동 로그인이 된 네이버 사이트에서 모든 쿠키를 삭제하면 실시간으로 로그인이 풀리는 것을 보실 수 있습니다! (너무 당연한건가요.)

  • 쿠키 사양
    : 쿠키 사양은 쿠키 지원을 위해 브라우저가 다음의 3가지 요건을 충족할 것을 명시합니다.
  1. 4,096(4KB)바이트 크기의 쿠키를 지원할 것.
  2. 한 도메인 당 최소 50개 쿠키를 지원할 것 (Ex: 각 웹사이트 당)
  3. 총 최소 3,000개 쿠키를 지원할 것.
  • 쿠키의 문제점

· 쿠키는 사용자에게 저장되어 사용자가 임의로 고치거나 지울 수 있는 것은 물론 남이 훔쳐보거나 가로채기 쉽습니다. -> 보안성이 낮음!
따라서 사용자의 편의를 위하되, 타인에 의한 임의의 수정·삭제·도난당하는 일이 일어나더라도 큰 일은 없을 수준의 정보들을 저장하게 됩니다.

+다른 누군가에게 노출되어서는 안되는 정보들은 '세션'으로 서버 안에서 다뤄집니다. 세션은 다음 글에서 계속...됩니다!

첫 글이라 글이 매끄럽지 못하고 가독성도 떨어지는 것 같지만, 꾸준히 발전하는 모습 보여드리겠습니다!

profile
한국 사람입니다.
post-custom-banner

2개의 댓글

comment-user-thumbnail
2021년 9월 25일

잘봤습니다!

답글 달기
comment-user-thumbnail
2021년 9월 29일

좋은 글 감사합니다!

답글 달기