본문 바로가기
system_fundamentals/security_cryptography

쿠키 보안 옵션

by 죄니안죄니 2026. 5. 18.
반응형

쿠키 보안 옵션은 웹 보안에서 진짜 중요하다.

특히:

  • 세션 탈취
  • XSS
  • CSRF
  • HTTPS 강제

이런 공격 방어 핵심이 쿠키 옵션들이다.


먼저 쿠키란?

브라우저에 저장되는 작은 데이터.

예:

 
Set-Cookie: SESSIONID=abc123
 

서버가 내려줌.


브라우저는 이후 요청마다:

 
Cookie: SESSIONID=abc123
 

자동 첨부.


문제점

쿠키는 자동 전송되기 때문에:

  • 탈취
  • 위조
  • CSRF

위험이 큼.

그래서 보안 옵션 필요.


핵심 보안 옵션 4개

실무에서 제일 중요.

옵션 목적
HttpOnly JS 접근 차단
Secure HTTPS만 전송
SameSite CSRF 방지
Path / Domain 전송 범위 제한

1. HttpOnly

가장 중요.

역할 : JavaScript에서 쿠키 접근 금지

예시

 
Set-Cookie: SESSIONID=abc123; HttpOnly
 

막는 공격

XSS 기반 세션 탈취

HttpOnly 없으면

악성 JS:

 
document.cookie
 

로 세션 탈취 가능.

HttpOnly 있으면

브라우저가:

JS 접근 차단
 

함.


중요: 자동 전송은 됨

HttpOnly라도:

 
Cookie: SESSIONID=abc123
 

브라우저 요청에는 자동 포함됨.

즉:

읽기만 차단
 

하는 옵션.


2. Secure

HTTPS 전용.

역할 : HTTPS 요청에서만 쿠키 전송

예시

 
Set-Cookie: SESSIONID=abc123; Secure
 

막는 공격

HTTP 평문 전송 중 탈취.

Secure 없으면 위험

공용 와이파이 같은 곳에서:

HTTP 요청
 

으로 쿠키 노출 가능.

Secure 있으면

HTTPS 아니면 전송 안함
 

.

실무 팁

요즘 브라우저는:

SameSite=None
 

사용 시 Secure 강제함.


3. SameSite

CSRF 핵심 방어 옵션.

엄청 중요.

문제 상황

사용자가:

bank.com 로그인 상태
 

.

그 상태에서 악성 사이트 접속.

악성 사이트가:

 
<form action="https://bank.com/transfer">
 

전송.

브라우저는 자동으로:

 
Cookie: SESSIONID=...
 

붙여버림.

→ CSRF 발생.

SameSite 역할

다른 사이트 요청에는
쿠키 보내지 말자
 

.


옵션 종류

의미
Strict 완전 차단
Lax 일부 허용
None 전부 허용

SameSite=Strict : 가장 강력.

동작

다른 사이트에서 들어오면: 쿠키 안보냄

 

장점

CSRF 매우 강력.

단점

UX 깨질 수 있음.

예:

  • 외부 링크 클릭
  • OAuth 로그인

등 문제.


SameSite=Lax : 요즘 기본값.

특징

일반 링크 이동(GET)은 허용.

POST 등 위험 요청 차단.

실무에서 가장 많이 사용.


SameSite=None : 외부 사이트 포함 전부 허용.

반드시 필요할 때만 사용

예:

  • SSO
  • OAuth2
  • 크로스도메인 인증

근데 Secure 필수

 
SameSite=None; Secure
 

반드시 같이 써야 함.


4. Domain : 쿠키 전달 도메인 제한.

예시

 
Set-Cookie: SESSIONID=abc; Domain=example.com
 

의미

모든 서브도메인 공유
 

.

즉:

  • app.example.com
  • admin.example.com

둘 다 전송됨.

Domain 지정 안하면

현재 호스트만 사용.

더 안전함.


5. Path : URL 범위 제한.

예시

 
Set-Cookie: ADMIN=1; Path=/admin
 

의미

admin 경로에서만 전송
 

.


6. Max-Age / Expires : 쿠키 만료 시간.

세션 쿠키dirr

브라우저 종료 시 삭제.

영구 쿠키

 
Max-Age=3600
 

1시간 유지.


실무에서 가장 안전한 세팅

세션 쿠키 기준 보통 이렇게 감.

 
Set-Cookie:
SESSIONID=abc123;
HttpOnly;
Secure;
SameSite=Lax;
Path=/
 

JWT 저장 시 논쟁

엄청 중요.


localStorage 저장

장점:

  • 구현 쉬움

단점:

  • XSS에 취약

HttpOnly Cookie 저장

장점:

  • JS 접근 불가

단점:

  • CSRF 고려 필요

요즘 실무 경향

민감 서비스는:

HttpOnly + Secure + SameSite
 

조합 많이 사용.


Spring Boot 설정 예시

application.yml

 
server:
  servlet:
    session:
      cookie:
        http-only: true
        secure: true
        same-site: lax
 

Spring Cookie 직접 생성

 
ResponseCookie cookie = ResponseCookie.from("SESSION", token)
    .httpOnly(true)
    .secure(true)
    .sameSite("Lax")
    .path("/")
    .build();
 

실무 핵심 정리

공격 방어 옵션
XSS 쿠키 탈취 HttpOnly
HTTP 중간 탈취 Secure
CSRF SameSite
과도한 쿠키 전송 Path/Domain 제한

한 줄 핵심 정리

쿠키 보안 옵션은:

"언제,
어디서,
누가,
어떻게"

쿠키를 사용할 수 있는지 제한해서

세션 탈취와 CSRF 같은 공격을 막는 보안 설정
 

이야.

 

 

 

🔗 보안_암호학 목차로 

반응형

댓글