1 분 소요

우리가 http 통신을 배울 때 http는 stateless(무상태성) 이라고 했었다. 그런데 쇼핑물 사이트에 장바구니에 원하는 물품을 담고, 다른 사이트를 돌아다니고 쇼핑몰 사이트에 다시 접속을 해도 장바구니가 유지가 되는 것을 볼 수 있다. 이 점은 바로 쿠키 때문에 유지가 된다.

Cookie(쿠키)

쿠키란 어떤 웹사이트에 들어갔을 때, 서버가 일방적으로 클라이언트에 전달하는 작은 데이터이다.

  • 서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단이다.
  • 해당 도메인에 대해 쿠키가 존재하면, 웹 브라우저는 도메인에게 http 요청 시 쿠키를 함께 전달한다.

그렇다면 쿠키는 어디에 사용될까? 먼저 쿠키의 특징을 알아보겠다.

  • 삭제하지 않으면 사라지지 않는다.

이러한 특징 때문에 쿠키는 사용자 선호, 테마 등 장시간 보존해야하는 정보 저장에 적합하다. 하지만 웹 브라우저에서 쿠키에 대한 정보가 쉽게 접근이 가능하여 보안상의 취약점도 나타나게 된다. 따라서 쿠키 역시 암호화 하여 전달을 해야 한다. 또한 민감한 정보나 개인 정보는 담지 않는 것이 좋다.

이러한 보안상의 취약점 때문에 여러가지의 옵션이 있는데, 한번 알아보겠다.

  • Domain 서버와 요청의 도메인이 일치하는 경우 쿠키 전송

  • Path 서버와 요청의 세부경로가 일치하는 경우 쿠키 전송

  • MaxAge or Expries 쿠키의 유효기간 설정

  • HttpOnly 쿠키는 script 태그로 접근이 가능하여 XSS공격에 취약하다. 따라서 스크립트의 쿠키 접근 가능 여부 결정하는 옵션을 설정하여 막을 수 있다.
  • Secure HTTPS 프로토콜에서만 쿠키 전송 여부 결정

  • SameSite CORS 요청의 경우 옵션 및 메서드에 따라 쿠키 전송 여부 결정 CSRF 공격을 막는데 최적화

    • 옵션

      • Lax : GET 메서드 요청만 쿠키 전송 가능
      • Strict : 쿠키 전송 불가
      • None : 모든 메서드 요청에 대해 쿠키 전송 가능 HTTPS와 Secure 쿠키 옵션이 필요하다.

댓글남기기