fix(security): 세션 쿠키 보안 플래그 + 운영 로그 레벨
- 세션 쿠키에 HttpOnly(XSS로 탈취 방어)·Secure(HTTPS 전용)·SameSite=Strict(CSRF 방어) 적용 - Secure는 COOKIE_SECURE 환경변수로 분리 (로컬 http 개발에서도 로그인되도록 기본 false) - 운영 로그 레벨을 LOG_LEVEL 환경변수로 분리, 운영은 INFO - 학습 포인트 주석: 세션 인증의 3대 쿠키 플래그가 왜 필요한가 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
5a82ecb291
commit
8486c7e656
@ -30,7 +30,13 @@ server:
|
||||
servlet:
|
||||
session:
|
||||
timeout: 8h # 하루 근무 동안 로그인 유지
|
||||
cookie:
|
||||
# 학습 포인트: 세션 쿠키에 붙이는 3대 보안 플래그. 세션 방식 인증에선 필수다.
|
||||
http-only: true # JS(document.cookie)로 못 읽는다 → XSS로 세션 탈취 방어
|
||||
secure: ${COOKIE_SECURE:false} # HTTPS로만 쿠키 전송(운영은 true). 로컬(http)은 false여야 로그인됨
|
||||
same-site: strict # 다른 사이트에서 온 요청엔 쿠키를 안 붙인다 → CSRF 방어의 핵심
|
||||
|
||||
logging:
|
||||
level:
|
||||
dev.awesomedev.mirim: DEBUG
|
||||
# 학습 포인트: 개발은 DEBUG로 자세히, 운영은 INFO로. 로그도 자원이고, 과한 로그는 비용·노이즈다.
|
||||
dev.awesomedev.mirim: ${LOG_LEVEL:DEBUG}
|
||||
|
||||
@ -31,6 +31,8 @@ services:
|
||||
DB_NAME: mirim
|
||||
DB_USER: mirim
|
||||
DB_PASSWORD: ${DB_PASSWORD}
|
||||
COOKIE_SECURE: "true" # 운영은 HTTPS(Caddy)이므로 세션 쿠키를 HTTPS 전용으로
|
||||
LOG_LEVEL: INFO # 운영 로그는 INFO
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user