웹브라우저의 캐시 - 쿠키(Cookie)

이강용·2024년 6월 21일
0

CS

목록 보기
64/109

쿠키(Cookie)

  • 웹사이트가 사용자의 웹 브라우저에 저장하는 작은 데이터 파일로 사용자의 세션 정보를 유지하고 웹사이트 간의 상호작용을 추적하는 데 사용
    • 사용자의 경험을 맞춤화하고 웹사이트의 기능을 개선하며 사용자 활동을 분석하는 데 중요한 역할을 함

특징

  1. 작은 데이터 파일 : 쿠키는 일반적으로 4KB 이하의 작은 데이터 파일로 텍스트 형식으로 저장
  2. 키 - 값 쌍 : 키 - 값 쌍의 형태로 저장
    • 예를들어, username=JohnDoe와 같은 형태
  3. 도메인 범위 : 쿠키는 특정 도메인과 관련이 있으며 해당 도메인에서만 접근할 수 있음
  4. 만료 시간 : 쿠키는 만료 시간을 설정할 수 있음
    • 만료 시간이 지나면 쿠키는 자동으로 삭제됨

HTTP 헤더를 통해 쿠키 정보를 주고 받음

유형

  1. 세션 쿠키(Session Cookies) : 브라우저가 열려 있는 동안에만 유지되는 쿠키
    • 브라우저를 닫으면 세션 쿠키는 삭제됨
      • 주로 로그인 상태 유지와 같은 임시 데이터를 저장하는 데 사용
  2. 영구 쿠키(Persistent Cookies) : 만료 시간이 설정된 쿠키로 해당 시간이 지날 때까지 브라우저에 남아 있음
    • 사용자의 재방문 시 설정을 유지하거나, 로그인 정보를 기억하는 데 사용
  3. 보안 쿠키(Secure Cookies) : HTTPS 연결을 통해서만 전송되는 쿠키
    • 네트워크를 통한 쿠키의 도난을 방지하기 위해 사용
      ❗️ Chorme v89 및 Firefox v75 이상 버전에서는 localhost 환경에서 Secure 속성을 무시하여 HTTP로도 쿠키를 주고받을 수 있게 함 (이는 개발 및 테스트를 쉽게 하기 위한 조치)
  4. 서드파티 쿠키(Third-Party Cookies) : 사용자가 방문한 웹사이트가 아닌 다른 도메인에서 설정한 쿠키
    • 주로 광고와 같은 추적 목적으로 사용
const http = require("http");
const hostname = "127.0.0.1";
const port = 3000;
const server = http.createServer((req, res) => {
  res.setHeader("Content-Type", "text/plain; charset=utf-8");
  res.setHeader("Set-Cookie", [
    "leesfact = backend; httponly",
    "tier = gold; Secure",
  ]);
  res.end(
    "과정에서 겪는 모든 어려움은 결국 당신의 목적을 이루기 위한 과정이다!\n"
  );
});
server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

http only 옵션 시, 자바스크립트로 파악할 수 없음(예: leesfact : backend)

쿠키의 시큐어 코딩(Secure Coding for Cookies)

  • 쿠키 사용 시 보안 취약점을 방지하고 데이터의 안전성을 보장하기 위한 일련의 모범 사례를 의미

주요 지침

  1. Secure 속성 사용
  • Secure 속성을 설정하여 쿠키가 HTTPS 연결을 통해서만 전송되도록 한다. 이를통해 네트워크를 통한 쿠키의 도난을 방지할 수 있음
Set-Cookie: sessionId=abc123; Secure; HttpOnly; Path=/; Expires=Wed, 21 Oct 2024 07:28:00 GMT
  1. HttpOnly 속성 사용
  • HttpOnly 속성을 설정하여 자바스크립트에서 쿠키에 접근하지 못하도록 함
    • 이를통해 XSS(교차 사이트 스크립트) 공격을 방지할 수 있음
Set-Cookie: sessionId=abc123; Secure; HttpOnly; Path=/; Expires=Wed, 21 Oct 2024 07:28:00 GMT
  1. SameSite 속성 사용
  • CSRF(Cross-Site Request Forgery, 교차 사이트 요청 위조) 공격을 방지할 수 있음
    • Strict 또는 Lax 값을 설정하여 쿠키가 동일 사이트 내에서만 전송되도록 함
Set-Cookie: sessionId=abc123; Secure; HttpOnly; SameSite=Strict; Path=/; Expires=Wed, 21 Oct 2024 07:28:00 GMT
  1. 적절한 만료 시간 설정
  • 쿠키의 유효 기간을 설정하여 필요 이상으로 오래 유지되지 않도록 한다.
Set-Cookie: sessionId=abc123; Secure; HttpOnly; Path=/; Expires=Wed, 21 Oct 2024 07:28:00 GMT

쿠키 허용 관련 알림창

  • 서비스 운용 시, 쿠키를 사용한다면 쿠키 허용 관련 알림창을 만들어야 함

  • 방문 기록을 추적할 때 쿠키가 사용되기 때문

  • 이는 사용자의 데이터 간접 수집에 해당하며, KISA 지침을 준수해야 함

    이미지
profile
HW + SW = 1

0개의 댓글