Web

[Web] 웹 쿠키/ HTTP 쿠키

poopooreum 2024. 9. 2. 18:19
반응형

✏️ 키란?

  • 웹은 기본적으로 stateless한 상태여서 서버가 클라이언트의 요청을 기억하지 않기 때문에 클라이언트는 매 요청마다 자신의 정보를 서버에게 알려줄 필요가 있는데 이때 사용하는 수단이 쿠키이다
  • 쉽게 말하면 브라우저가 가지고 있는 데이터를 뜻한다
  • key-value형태로 저장이 되어 있고, 만료 시간이 무한일 경우에는 브라우저가 종료돼야 쿠키도 없어진다

✏️ 쿠키 생성 과정

  • 기본적으로 브라우저는 매 요청마다 서버에 쿠키를 동봉해서 보내기 때문에 서버에 요청을 보낼떄 쿠키가 있을때와 없을때로 나눌 수 있음
  • 쿠키가 있을 때 : 쿠키로 사용자 상태 정보를 식별
  • 쿠키가 없거나 만료되었을 때 : 서버가 응답을 보낼때 쿠키를 새롭게 설정해서 같이 보낸다

  1. 즉 클라이언트가 서버에 요청(회원가입, 로그인 등등) 서버가 응답할 때 쿠키에 저장하고자 하는 정보를 Header의 set-cookie로 함께 전달
  2. 이렇게 만들어진 쿠키는 브라우저마다 쿠키가 저장되기 때문에, 네이버에서 저장된 쿠키를 다음에서 사용할 수 없게 된다, 즉 브라우저가 다르면 서버는 다른 사람으로 인식을 하게 된다
  3. 클라이언트는 서버로 전송하는 모든 요청에, 현재 브라우저에 저장된 모든 쿠키를 Header의 Cookie로 전달
  4. 서버가 쿠키와 함께 응답을 클라이언트에게 전달하면, 해당 클라이언트는 매번 저장된 쿠키를 헤더에 포함하여 요청을 내린다
  5. 웹 브라우저의 검사 기능을 이용하면 application 탭에서 저장된 cookie를 확인할 수 있고 추가, 변경, 제거가 가능

✏️ 쿠키의 특징

  • 쿠키는 사용자의 컴퓨터(브라우저)에 저장되기 때문에 언제든지 정보를 수정할 수 있다(어쩔 수 없음)
  • 쿠키는 저장될 때 현재 내가 위치한 도메인의 정보를 저장하기 때문에, 브라우저마다 쿠키를 저장할 수 있고 요청에 의해서 도메인을 다르게 저장할 수는 없다
  • 쿠키에는 많은 값들이 중요하지만 그 중 중요한 것은 사용자를 인식할 수 있는 value값이고 여기에는 고유한 값인 사용자의 id로 설정하자
  • 서버는 클라이언트가 보낸 cookie값에서 해당되는 id를 통해 서버와 연결된 db에서 값을 찾는다
  • 즉 서버에는 쿠키의 데이터가 저장되지 않으며 서버는 쿠키를 생성하기만 하고 브라우저에 저장된다

✏️ 쿠키의 목적

  1. 세션 관리 - 서버에 저장해야 할 로그인, 장바구니, 게임 스코어, 접속 시간 등의 개인 정보 관리
  2. 개인화 - 각 사용자에게 적절한 페이지를 보여줌(사용자 선호, 테마 등의 세팅)
  3. 트래킹 - 사용자의 행동과 패턴을 분석하고 기록하는 용도

✏️ 쿠키의 한계

  1. 유실되기 쉽다 ⇒ 브라우저에 저장되기 때문에 환경 설정에서 쿠키 일괄 삭제 기능을 제공하며, 웹사이트 별로 어렵지 않게 쿠키를 삭제할 수 있다. 특정 브라우저가 하드디스크의 어느 경로에 쿠키를 저장하는지는 구글링을 해보면 누구나 쉽게 파악할 수 있어서 통째로 폴더를 삭제할 수 있으므로 중요한 데이터는 쿠키에 저장하지 않기
  2. 변조되기 쉽다 ⇒ 브라우저의 개발자 도구를 사용하면 . 각 웹사이트별로 현재 어떤 쿠키가 저장되어 있는지 한 눈에 파악할 수 있고 쿠키를 손쉽게 변경할 수 있다 ⇒ 서버가 브라우저로 보낸 쿠키와 전혀 다른 쿠키를 서버에 돌려 보낼 수도 있고, 심지어 서버가 저장한 적이 없는 새로쿤 쿠키를 만들어서 서버에 보낼 수도 있다. 프록시 서버를 이용해서 브라우저에서 보낸 쿠키를 중간에서 변조해서 서버에 보내는 것도 충분히 가능한 일, 서버에서는 브라우저로부터 수신한 쿠키 데이터가 유효한지 검증해야함
  3. 보안이 약하다 ⇒ 클라이언트에 저장되어 있는 쿠키가 탈취되는 것을 서버 입장에서 막을 도리가 없다

✏️ 쿠키의 대체 기술

  • 로컬 스토리지나 세션 스토리지
  • 웹 스토리지 기술 지원

✏️ 쿠키의 보안 속성

  • secure ⇒ 이 속성이 명시된 쿠키는 브라우저가 https 프로토콜 상에서만 서버로 돌려 보낸다. 네트워크 상에서 탈취되었을 때 문제가 될 수 있는 쿠키를 상대로 쓰면 유용
  • httponly : 이 속성이 명시된 쿠키는 브라우저에서 자바스크립트로 document.cookie 객체를 통해 접근할 수 없음, 서드 파티 자바스크립트 코드가 쿠키에 접근하는 것을 제한할 수 있다
반응형