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

어겐어갠·2022년 5월 26일
0

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개의 댓글