쿠키가 뭐지...

호기성세균·2024년 4월 2일
0

cs

목록 보기
14/30
post-thumbnail

🍪 쿠키 정의 🍪

브라우저에 저장되는 key와 value로 이루어진 작은 크키의 문자열

헨젤과 그레텔에서 걸어온 길을 추적하기 위해 쿠키를 사용했던 것처럼 웹서비스에서는 로그인, 검색기록 등 우리가 어떤 일을 했는지 쿠키에 저장한다!


🍪 쿠키 특징 🍪

  • 크키제한(4kb)
  • 만료시간 설정 가능
  • http 요청시 따로 설정하지 않아도 자동전달
  • 브라우저에 저장

    우리가 웹에서 어떤 페이지에 접속하거나 서비스를 이용하는 것은 ‘브라우저’를 통해 이루어짐
    브라우저란? 서버에서 제공하는 정보를 우리가 볼 수 있게 해줌


🍪 그럼 왜 쿠키를 사용하는데? 🍪

(http의 특징 때문)

  • http란? 웹에서 이루어지는 모든 데이터 전송의 기본이 되는 프로토콜

  • http 의 특징
    - connectionless 비연결성 : 이 특징때문에 서버는 모든 요청을 다른 사용자로 인식하게 됨
    - stateless 비상태성 : 이 특징때문에 사용자가 로그인한 상태인지 아닌지 알 수 없게 됨

    ❗️ 보통 이런 문제 때문에 사용되는 것이 쿠키와 세션

http는 이러한 특징들 때문에 서버는 확장성이 높아진다는 장점을 가져감


🍪 세션으로 보는 쿠키 사용 🍪

  1. 웹페이지에 접속하면 서버는 쿠키를 만들어 브라우저로 보내줌
  2. 이 쿠키는 브라우저에 저장
  3. 브라우저는 이 쿠키를 가지고 있다가 서버에 정보를 요청할 때마다 쿠키를 같이 보내줌
  4. 서버는 브라우저가 보낸 쿠키를 확인하고 맞는 정보를 보내줌
    -> 서버가 쿠키 정보를 수정해서 보내주면 이는 다시 브라우저에 저장

    이렇게 정보를 주고받는 것은 api를 통해 이루어짐


🍪 쿠키 단점 🍪

  • 브라우저에 저장되기 때문에 보안 취약

    민감한 개인 정보 저장에는 사용x 민감한 정보들은 모두 서버에 있음

  • Http 요청시 모든 쿠키 자동으로 전달되기 때문에 불필요한 트래픽 양 증가
  • XSS 공격에 취약 : 공격자가 악성 스크립트를 삽입하여 브라우저에서 실행

    대응법 : HttpOnly 속성 제공(자바스크립트로 쿠키 조회 방지)

  • XSRF 공격에 취약 : 사용자인 척 악성 request를 보내는 공격

    대응법 : SameSite속성 제공 (사이트와 같은 도메인 요청에만 쿠키를 전송)
    ❗️그 외에 Secure 속성을 이용해 https로 통신하는 경우에만 쿠키가 전송


🍪 쿠키 구성요소 🍪

  1. 키 : 쿠키 식별(당연히 중복값 안됨)
  2. 도메인 : 현재 쿠키가 어떤 서버로 전송되어야 하는지 지정(따로 명시하지 않으면 쿠키가 생성된 서버로만 전송됨)
  3. 경로 : 명시한 경로와 그 하위 경로에만 쿠키가 전송
  4. 기한 : 쿠키 유통기한(만료 날짜 지정하지 않으면 브라우저 종료되면 쿠키도 같이 삭제됨 == 세션쿠키)
  5. 보안요소

🍪 쿠키 구분! 🍪

🥠 발행 주체에 따라 구분되는 쿠키

  • First-Party cookie : 사용자가 이용중인 웹사이트 소유자가 직접 생성
    • 서비스 운영과 마케팅 등에 활용
  • Third-Party cookie : 제 3자가 발행한 쿠키
    • 사용자의 행적을 파악해 맞춤형 광고의 타켓팅에 활용

구글은 2023년 말까지 서드파티 쿠키수집 중단을 발표함(시크릿모드)

🥠 사용 목적에 따라 구분되는 쿠키

  • 필수쿠키 : 사용자가 웹 사이트의 핵심기능들을 사용하기 위해 필수적으로 사용해야하는 쿠키
  • 성능쿠키 : 사용자의 웹사이트 이용정보를 수집해 서비스를 효율적으로 개선하는 데 사용
  • 기능쿠키 : 사용자의 언어, 지역 등을 저장해 사용자에게 최적화된 서비스를 제공할 수 있도록 하는 데 사용
  • 타겟팅쿠키 : 광고를 제공하는 데 사용(서드파티쿠키와 가장 연관)

    서드파티 기업들인 이런 타겟팅 쿠키를 공유하고 맞춤형 광고 제공


🍪 요약 🍪

  • 🤷🏻‍♀️ 쿠키 vs 세션 vs JWT 의 비교는 옳지 않다.
    • 보통 세션이나 JWT를 이용할 때는 쿠키와 복합적으로 이용.
      (ex. 세션 id를 쿠키에 저장, jwt토큰을 쿠키에 저장)

즉, 쿠키는

  • 로그인 id,pw 자동완성, 광고 하루 안보기 등 사용자의 편의를 위하되, 손실되도 큰 일 없을 정보들을 브라우저에 저장
  • 쿠키와 세션에 저장될 정보들을 잘 나눠야함. 쿠키를 남발하면 보안위협, 세션을 남발하면 접속자가 많아질 때 서버에 부하가 옴
profile
공부...열심히...

0개의 댓글