반응형
쿠키 보안 옵션은 웹 보안에서 진짜 중요하다.
특히:
- 세션 탈취
- 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 같은 공격을 막는 보안 설정
이야.
반응형
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| 공개키/개인키 용례에 따른 목적과 용법 (0) | 2026.05.18 |
|---|---|
| FIDO/WebAuthn (0) | 2026.05.18 |
| Refresh Token 구조 (0) | 2026.05.18 |
| OAuth2는 왜 이렇게 복잡한가 (0) | 2026.05.18 |
| 구글 로그인 기반 회원가입 시 DB구조 (0) | 2026.05.18 |
댓글