Cookie(쿠키)

쿠키는 클라이언트 로컬에 저장하는 작은 데이터 조각으로, 주로 다음과 같은 용도로 사용된다.

  • 사용자 로그인 세션 관리

  • 사용자 선호 설정

  • 광고 정보 트래킹

  • 그 외 다양한 용도로 사용

동작 방식

쿠키는 다음과 같은 방식으로 동작한다.

  • 생성 및 저장: 서버는 Set-Cookie HTTP 헤더를 통해 클라이언트에게 쿠키를 생성하도록 지시하고, 클라이언트는 서버로부터 받은 쿠키를 로컬에 저장

  • 전송: 클라이언트는 동일한 서버로 요청을 보낼 때마다 저장된 쿠키를 Cookie HTTP 헤더에 포함하여 전송(항상 헤더에 포함되어 전송되기 때문에, 트래픽이 증가할 수 있음)

  • 구성: 이름=값 형태로 구성

쿠키의 생명주기

쿠키의 타입은 파기되는 시점에 따라 아래 두 가지로 나뉜다.

  • 세션 쿠키(Session Cookie)

    • 사용자가 사이트를 탐색할 때, 관련한 설정과 선호 사항들을 저장하는 임시 쿠키

    • 브라우저가 종료되면 쿠키가 삭제됨

  • 지속 쿠키(Persistent Cookie)

    • 사용자가 주기적으로 방문하는 사이트에 대한 설정 정보나 로그인 이름 등을 저장하는 쿠키

    • 디스크에 저장되어, 브라우저가 종료되어도 쿠키가 삭제되지 않음

ExpiresMax-Age를 지정하지 않으면 세션 쿠키로 생성되며, ExpiresMax-Age를 지정하면 지속 쿠키로 생성된다.

  • Expires : 쿠키의 만료 시간을 지정

  • Max-Age : 쿠키의 만료 시간을 초 단위로 지정

도메인

모든 사이트에 브라우저 내의 모든 쿠키가 전송된다면 개인정보 문제와 불필요한 데이터를 전송하는 문제가 발생할 수 있기 때문에 해당 쿠키가 적용될 도메인과 경로를 지정할 수 있다.

  • Domain: 쿠키가 적용될 도메인을 지정하는 속성(하위 도메인에도 적용)

    • 명시하지 않으면 현재 도메인만 적용되고, 하위 도메인에는 적용되지 않음

  • Path : 쿠키가 적용될 경로를 지정하는 속성

    • 명시하지 않으면 모든 경로에 적용

보안

쿠키는 브라우저에 저장되기 때문에, 보안에 유의하지 않으면 여러 위험에 노출될 수 있다.

  • 해당 브라우저가 다른 사람에 의해 접근될 경우, 쿠키를 통해 사용자의 정보가 유출될 수 있음

  • 쿠키는 누구나 쉽게 볼 수 있는 평문 형태로 저장되기 때문에, 쿠키 값이 변조될 위험성이 존재

이러한 문제를 방지하기 위해 쿠키에 보안을 강화하는 속성을 지정할 수 있다.

  • Secure

    • 쿠키는 원래 HTTP, HTTPS를 구분하지 않고 전송

    • Secure 속성을 지정하면 HTTPS에서만 쿠키가 전송됨

  • HttpOnly

    • 자바스크립트 코드에서 쿠키에 접근이 가능한데 이를 막기 위해 HttpOnly 속성을 지정(XSS 공격 방지)

    • HTTP 전송에만 쿠키를 사용할 수 있게 됨

  • SameSite

    • SameSite 속성을 지정하면 SameSite 속성에 지정한 도메인과 같은 도메인에서만 쿠키가 전송됨

    • SameSite=Strict : 동일한 도메인에서만 쿠키가 전송됨

참고자료

Last updated

Was this helpful?