Skip to content

11. 클라이언트 식별과 쿠키

HyoSang edited this page Apr 4, 2019 · 2 revisions

11. 클라이언트 식별과 쿠키

  • HTTP는 익명으로 사용하며 상태가 없고 요청과 응답으로 통신하는 프로토콜
  • 그럼에도 개인화를 위해서 여러 정보를 이용한다.(헤더, IP주소, 로그인 인증, URL, 쿠키)

일반 식별용 HTTP 헤더

  • FROM : 사용자의 이메일 주소
  • User-Agent : 사용자의 브라우저
  • Referer : 사용자가 현재 링크를 타고 온 근원 페이지
  • Authorization : 사용자 이름과 비밀번호

클라이언트 IP 주소로 식별

  • 사용자가 아닌 사용하는 컴퓨터를 가리키므로 여러 사용자가 같은 컴퓨터를 사용할 경우 식별이 불가능
  • 유동 IP를 대부분 ISP가 제공하므로 사용자 식별이 어려움
  • NAT때문에 실제 IP가 숨겨짐
  • 프락시나 게이트웨이는 새로운 연결을 만드므로 클라이언트 정보를 알기가 어려움
  • 위와 같은 이유로 IP를 이용한 사용자 식별은 거의 사용되지 않는다.

뚱뚱한 URL

  • URL에 추가 정보를 붙여서 사용자를 식별
  • URL이 길어져서 사용자에게 혼란을 준다
  • URL을 공유할 수 없다
  • 캐시를 사용할 수 없다

쿠키

  • 여러 방식 중에 가장 널리 사용하는 방식

쿠키의 타입

  • 세션 쿠키, 지속 쿠키로 나눌 수 있다.
  • 세션 쿠키는 브라우저를 닫으면 삭제된다.
  • 지속 쿠키는 좀 더 길게 유지할 수 있다.
  • Discard 파라미터, Expires 혹은 Max-Age 파라미터가 존재하면 세션쿠키가 된다.

쿠키의 동작 방식

  • HTTP 응답 헤더의 Set-Cookie에 쿠키 정보를 넣어서 사용자가 쿠키를 이용할 수 있도록 한다.
  • 이름=값 형태로 전달 된다.
  • 브라우저는 헤더로 넘어온 값을 쿠키 데이터베이스에 저장한다.
  • 브라우저는 이 쿠키들을 요청 헤더에 기술해서 요청을 보낼 때 같이 전송한다.

사이트 마다 다른 쿠키

  • 브라우저는 쿠키를 생성한 서버에게만 쿠키에 담긴 정보를 전달한다.
  • Domain 속성을 쿠키에 기술해서 어떤 서버가 그 쿠키를 사용할 수 있는지 제어할 수 있다.
  • path 속성을 쿠키에 기술해 서버의 웹 사이트 일부에만 쿠키를 적용할 수도 있다.

Set-Cookie 헤더

ex) Set-Cookie: studioSuper=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/

  • 이름 = 값 : 큰 따옴표로 감싸지 않은 문자열로 어떤 조합이든 만들 수 있다
  • Expires : 선택적인 속성으로 쿠키의 생명 주기를 가리키는 날짜 문자열을 기술한다.
  • Domain : 이 속성에 기술된 서버에서 쿠키를 사용할 수 있게 하며, 기술되어 있지 않으면 쿠키를 생성한 서버를 기본값으로 사용한다.
  • Path : 이 서버의 특정 문서에만 쿠키를 할당할 수 있게 하는 속성
  • Secure : SSL 보안 연결을 사용할 때만 쿠키를 전송하게 하는 속성

Cookie 헤더

  • Set-cookie 헤더에 존재하는 조건을 만족하는 쿠키들을 하나의 헤더에 모아서 전송한다 ex) Cookie: cpNo=1; studioSuper=

캐시를 다루는 기본 원칙

  • 캐시되지 말아야 할 문서가 있다면 표시해라 ex) Cache-Control: no-cache="Set-Cookie"
  • Set-Cookie 헤더를 캐시 하는 것에 유의하라.
  • Cookie 헤더를 가지고 있는 요청을 주의하라
Clone this wiki locally