피드로 돌아가기
Dev.toDevOps
원문 읽기
Multi-stage Build 도입을 통한 .NET 이미지 88% 경량화 및 JWT 보안 강화
My .NET Docker image was 900MB - here's how I fixed it (and what I got wrong with JWT)
AI 요약
Context
SDK 이미지를 런타임 환경에 그대로 사용함에 따라 불필요한 빌드 도구가 포함된 912MB의 비효율적 이미지 생성. JWT를 LocalStorage에 저장하는 구조로 인해 XSS 공격 시 세션 탈취 가능성이 존재하는 보안 취약점 노출.
Technical Solution
- 빌드와 실행 환경을 분리하는 Multi-stage Build 설계를 통한 이미지 최적화
- 컴파일 전용 SDK 이미지에서 결과물만 추출하여 경량 런타임 기반의 Alpine 이미지로 이전
- .dockerignore 설정을 통한 로컬 빌드 아티팩트의 이미지 컨텍스트 포함 방지
- JavaScript 접근을 원천 차단하는 httpOnly Cookie 기반의 JWT 저장 방식으로 변경
- Secure 및 SameSite.Strict 옵션 적용을 통한 전송 계층 보안 및 CSRF 방어 체계 구축
실천 포인트
1. Dockerfile 작성 시 SDK와 Runtime 이미지를 분리하는 Multi-stage 구조 적용 여부 확인
2. .dockerignore 파일을 통한 bin, obj 등 불필요한 로컬 파일 배제 설정
3. 민감한 인증 토큰 저장 시 LocalStorage 대신 httpOnly, Secure 옵션이 적용된 Cookie 사용 검토