HTTP 완벽가이드 11장 클라이언트 식별과 쿠키

어겐어갠·2022년 5월 26일

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

서버가 통신하는 대상을 식별하는 기술

11.1 개별 저복

http는 익명으로 사용하며 상태가 없고 요청과 응답으로 통신하는 프로토콜이다.

사이트를 개인화시켜 사용자에게 제공하는 여러가지 방법

  • 개별 인사
    :사용자에게 특화된 환영 메세지나 페이지 내용을 만든다.
  • 사용자 맞춤 추천
    : 고객의 흥미를 학습하여 예상되는 제품을 추천할 수 있다.
  • 저장된 사용자 정보
    : 고객의 편의를 위해 저장된 사용자 정보를 사용할 수 있다.
  • 세션 추적
    : http 트랜잭션은 상태가 업승므로 각 요청과 응답은 독립적으로 일어난다.
    사용자와 사이트의 상호작용을 위해 사용자의 상태를 세션으로 남긴다.

11.2 HTTP 헤더

사용자에 대한 정보를 전달하는 7가지 HTTP 헤더

  • From 헤더
    : 이메일 주소를 포함한다. 악의적 사용(스팸 메일 등) 문제가 있어 활용이 적다.
  • User-Agent 헤더
    : 사용자의 브라우저 이름과 버전정보, 경우에 따라 운영체제에 대한 정보
  • Referer 헤더
    : 사용자가 현재 페이지로 유입하게 한 웹페이지의 URL
  • Authorization
  • Client-ip
  • X-Forwarded-For
  • Cookie

11.3 클라이언트 IP 주소

클라이언트 ip 주소로 사용자를 식별하는 방식은 다음의 약점이 있다

  • 사용하는 컴퓨터를 가리키기 떄문에, 공용 사용 컴퓨터에 대해서는 식별하기 힘들다.
  • 인터넷 서비스 사용자(ISP)는 동적으로 IP주소를 할당한다.
  • 많은 사용자는 방화벽을 사용한다.
  • 프락시가 있을 경우 서버는 프락시의 ip를 본다.

11.4 사용자 로그인

웹 서버는 사용자의 이름, 비밀번호로 인증할 것을 요구할 수 있다.

11.5 뚱뚱한 URL

사용자의 상태 정보를 포함하고 있는 URL

문제점

  • 못생긴 URL
  • 공유하지 못하는 URL
    : URL이 사용자의 세션에 대한 정보가 있으므로 공유 불가
  • 캐시 사용 불가
    : URL이 달라지므로 기존 캐시에 접근 불가
  • 서버 부하 가중
    : 뚱뚱한 URL에 해당하는 페이지를 다시 그려야 한다.
  • 이탈
    : 사용자가 다른 페이지로 이탈하기 쉬운데, 그럼 다시 뚱뚱한 URL로 돌아오기가 힘들다.
  • 세션간 지속성의 부재
    : 로그아웃하면 모든 정보를 잃는다.

11.6 쿠키

식별하는 방법들 중 가장 널리 사용하는 방식
쿠키는 캐시와 충돌할 수 있어서, 쿠키에 있는 내용물을 캐싱하지 않는다

11.6.1 쿠키의 타입

쿠키는 파기되는 시점에 따라 세션 쿠키(임시쿠키) , 지속 쿠키 로 나눌 수 있다.
지속 쿠키는 브라우저 종료, 하드웨어 재시작에도 남아있다.
임시 쿠키는 브라우저 종료시 만료된다.

11.6.2 쿠키는 어떻게 동작하는가

쿠키는 키 = 벨류 혀애의 리스트를 가지고 Set-Cookie 같은 HTTP 응답 헤더에 기술된다.

11.6.3 쿠키 상자: 클라이언트 측 상태

'클라이언트 측 상태' = 브라우저가 쿠키 정보를 저장할 책임

Cookies 파일의 각 쿠키들

  • creation_utc
    : 쿠키가 생성된 시점
  • host_key
    : 쿠키의 도메인
  • name
    : 쿠키의 이름
  • value
    : 쿠키의 값
    path
    : 도메인에 있는 경로
    expire_utc
    : 쿠키의 파기 시점, 초 단위
    secure
    : SSL 커넥션일 경우에만 보낼 지에 대한 정보

11.6.4 사이트마다 각기 다른 쿠키들

브라우저는 각 사이트에 2~3개의 쿠키만을 보낸다.

  • 쿠키를 모두 전달하면 성능이 크게 저하되고,
  • 쿠키가 모든 사이트에 통용되지 않고,
  • 개인정보 문제를 일으킬 수 있기 때문이다.

이를 Set-Cookie 응답 헤더에 Domain 속성, Path 속성을 통해 기술할 수 있다.

11.6.6 Version 0(넷스케이프) 쿠키 명세

Version 0 쿠키 명세 = Set-Cookie 응답 헤더, Cookie 요청 헤더, 쿠키 조작 시 필요한 필드

Set-Cookie 속성

  • 이름 = 값
    : 필수 속성
  • Expires
    : 선택적 속성. 쿠키의 생명주기 관련. 없으면 세션이 끝날 때 파기
  • Domain
    : 선택적 속성. 특정 도메인에만 쿠키 제한적으로 전달
  • Path
    : 선택적 속성. 서버에 있는 특정 문서에만 쿠키를 할당 가능.
  • Secure
    : 선택적 속성. SSL 보안 연결을 사용할 때만 쿠키 전송

11.6.8 쿠키과 세션 추적

쿠키는 수차레 트랜잭션을 만들어내는 사용자를 추적하는 데 사용한다.

11.6.9 쿠키와 캐싱

캐시를 다루는데 기본 원칙

  • 캐시되지 말아야 할 문서가있다면 표시하라
    : Cashe-Control 을 통해 가능
  • Set-Cookie 헤더를 캐시 하는 것에 유의하라
  • Cookie 헤더를 가지고 있는 요청을 주의하라
    : 보수적인 캐시는 매번 재검사를 하도록 강제하는 것이 효율적이다.

11.6.10 쿠키, 보안 그리고 개인정보

개인정보를 다루는 기술은 잘못된 의도로 사용될 수 있기 때문에 조심해야하며, 가장 큰 오용은 지속 쿠키를 사용하는 것이다.

개인정보 정책에 유의하여 잘 사용한다면 쿠키는 위험성보다 트랜잭션상의 편리함이 더 크다.

profile
음그래

0개의 댓글