[데브코스] Spring Boot 인증·인가(Auth) (44강) - 쿠키는 fetch 요청 시 자동으로 헤더에 포함된다

zuno·2026년 1월 18일

43강에서 우리는 XSS 공격으로 로컬 스토리지에 저장된 apiKey가 탈취되는 시나리오를 봤다.
44강에서는 그에 대한 중요한 대안을 다룬다.

핵심은 이 문장이다.

“쿠키는 fetch 요청 시 자동으로 헤더에 포함된다.”


1️⃣ 쿠키의 가장 큰 특징

쿠키의 가장 중요한 특징은 이것이다.

  • 브라우저가 자동으로 요청 헤더에 포함시켜 전송
  • 개발자가 직접 헤더를 조작할 필요 없음

즉,

쿠키는 브라우저가 관리하는 인증 수단


2️⃣ 쿠키의 자동 전송 방식

서버가 응답 시 다음과 같이 쿠키를 설정하면

Set-Cookie: apiKey=xxxx; Path=/;

이후 브라우저는:

  • 같은 도메인으로 요청할 때
  • 자동으로 Cookie 헤더에 포함시켜 전송
Cookie: apiKey=xxxx

👉 개발자는 fetch 코드에서 쿠키를 직접 넣지 않는다.


3️⃣ fetch 요청 시 쿠키 자동 포함

const response = await fetch("http://localhost:8080/api/v1/posts/1", {
  credentials: "include"
});
  • credentials: "include"
    • 프론트엔드와 백엔드 도메인이 다른 경우에도
    • 쿠키가 전송되도록 설정

👉 이 코드만으로도
👉 쿠키에 저장된 apiKey가 자동 전송된다


4️⃣ 로컬 스토리지 방식과 비교

✔ 로컬 스토리지에 저장한 경우

const apiKey = localStorage.getItem("apiKey");

const response = await fetch("http://localhost:8080/api/v1/posts/1", {
    headers: {
        Authorization: `Bearer ${apiKey}`
    }
});
  • 매 요청마다 직접 헤더에 추가
  • apiKey가 JS 코드에서 그대로 노출
  • XSS 공격 시 즉시 탈취 가능

✔ 쿠키에 저장한 경우

const response = await fetch("http://localhost:8080/api/v1/posts/1", {
  credentials: "include"
});
  • Authorization 헤더 직접 설정 ❌
  • 쿠키는 브라우저가 자동 전송
  • JS 코드에서 인증 정보 관리 ❌

5️⃣ 쿠키 vs 로컬 스토리지 비교

구분쿠키로컬 스토리지
프론트엔드에서 조작 가능✅ 가능 (HttpOnly 쿠키는 ❌)✅ 가능
백엔드에서 조작 가능✅ 가능 (Set-Cookie 헤더)❌ 불가능
fetch 시 자동 전송✅ 자동 전송 (Cookie 헤더)❌ 수동 전송
용량 제한약 4KB5~10MB
만료 기간설정 가능기본 영구
도메인 제한설정 가능도메인별 분리
XSS 보안HttpOnly 설정 시 접근 불가JS에서 자유 접근

6️⃣ XSS 관점에서 본 결정적인 차이

로컬 스토리지

  • JavaScript로 자유롭게 접근 가능
  • XSS 발생 시 즉시 탈취

HttpOnly 쿠키

  • JavaScript에서 접근 불가
  • XSS로 apiKey 직접 탈취 ❌

👉 43강에서 본 대규모 계정 탈취 시나리오 차단 가능


7️⃣ 왜 “자동 전송”이 중요한가?

  • 개발자가 실수로 인증 헤더를 빼먹을 가능성 ❌
  • 모든 요청에 일관되게 인증 정보 포함
  • 인증 책임을 브라우저에 위임

즉,

인증 실수를 구조적으로 줄여준다


8️⃣ 이 강의의 핵심 메시지

44강의 핵심 메시지는 이것이다.

“인증 정보는 개발자가 들고 있지 말고,
브라우저에게 맡겨라.”

  • 로컬 스토리지는 편하지만 위험
  • 쿠키는 번거롭지만 안전
  • 특히 XSS를 고려하면 차이는 압도적

9️⃣ 정리

  • 쿠키는 fetch 요청 시 자동으로 전송된다
  • Authorization 헤더를 직접 다룰 필요가 없다
  • HttpOnly 쿠키는 XSS로부터 인증 정보를 보호한다
  • 로컬 스토리지 방식은 XSS에 매우 취약하다
  • 보안을 고려한다면 쿠키 기반 인증이 더 적합하다

44강은 이렇게 요약할 수 있다.

“자동으로 전송되는 인증 정보는
자동으로 지켜진다.”

0개의 댓글