HTTP Strict Transport Security (HSTS) 설명
HTTP Strict Transport Security (HSTS)는 브라우저가 오직 HTTPS로만 사이트에 연결하도록 지시하는 응답 헤더입니다. 한 번 확인하면, 브라우저는 정책이 유효한 동안 도메인에 대한 일반 HTTP 연결을 거부합니다.
무엇인가요
HSTS는 Strict-Transport-Security 헤더로 전달됩니다. 예: max-age=31536000; includeSubDomains; preload. max-age는 브라우저가 규칙을 기억하는 기간(초)입니다.
첫 HTTPS 방문 이후, 브라우저는 이후의 모든 요청을 자동으로 HTTPS로 업그레이드합니다 — 사용자는 실수로 안전하지 않은 버전에 접속할 수 없고, 공격자는 연결을 HTTP로 되돌릴 수 없습니다.
왜 중요한가요
HSTS가 없으면 사용자가 처음 보내는 요청(yourdomain.com 입력)이 일반 HTTP로 나가며, HTTPS 리디렉션이 일어나기도 전에 가로채일 수 있습니다 — 전형적인 SSL 스트리핑 공격입니다.
약한 HSTS 정책은 보호를 약화시킵니다: 짧은 max-age는 적용 기간을 줄이고, includeSubDomains 생략은 모든 서브도메인을 다운그레이드에 노출된 채로 둡니다.
고치는 방법
긴 max-age(1년)를 사용하고, 서브도메인을 포함하고, preload에 등록하세요.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload모든 서브도메인이 유효한 HTTPS를 제공한 뒤에만 includeSubDomains와 preload를 추가하세요 — 그렇지 않으면 준비되지 않은 서브도메인에서 사용자를 차단할 수 있습니다.
헤더에 'preload'가 포함되면 hstspreload.org에 도메인을 제출하여 브라우저가 아주 첫 방문에서도 HTTPS를 적용하도록 하세요.
자주 묻는 질문
어떤 max-age를 사용해야 하나요?
최소 15552000(6개월)이며, 31536000(1년)이 흔한 권장값이고 preload 목록에 필요합니다.
HSTS가 내 사이트에서 나를 차단할 수 있나요?
나중에 HTTP로 제공해야 하거나 HTTPS 없는 서브도메인이 있는 경우에만 그렇습니다. includeSubDomains나 preload를 활성화하기 전에 충분히 테스트하세요.