Strict-Transport-Security
응답 헤더 Security

개요

Strict-Transport-Security(HSTS)는 브라우저에게 앞으로 이 사이트에는 반드시 HTTPS로만 접속하라고 지시하는 보안 헤더입니다. 한 번 받으면 max-age 동안 http:// 접근 시도를 브라우저가 자동으로 https://로 승격하고, 인증서 오류를 무시할 수 없게 만듭니다.

이는 SSL 스트리핑(HTTP로 강등시키는 중간자 공격)과 최초 평문 요청 탈취를 막는 핵심 방어책입니다.

자세히

브라우저는 HSTS 헤더를 HTTPS 응답에서만 신뢰합니다(HTTP 응답의 HSTS는 무시). 헤더를 받으면 max-age 동안 그 호스트에 대한 모든 요청을 내부적으로 HTTPS로 강제하며, includeSubDomains가 있으면 모든 하위 도메인에도 동일하게 적용합니다.

preload는 특별합니다. 브라우저 벤더가 관리하는 preload 목록에 도메인을 등재하면, 사용자가 그 사이트를 한 번도 방문한 적 없어도 첫 요청부터 HTTPS가 강제됩니다. 이는 최초 방문 시의 취약 구간까지 없애지만, 목록 등재는 사실상 되돌리기 어렵습니다.

권장 구성은 긴 max-age(예: 2년=63072000)와 includeSubDomains, 그리고 준비가 되면 preload입니다. HTTP(80)에서 HTTPS(443)로의 리다이렉트도 함께 구성해야 최초 접속이 HTTPS로 이어집니다.

문법

Strict-Transport-Security: max-age=<seconds>[; includeSubDomains][; preload]

e.g. Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

지시어 / 값

max-age=<seconds>브라우저가 HTTPS 강제를 기억할 기간(초). 0이면 정책을 즉시 해제합니다.
includeSubDomains모든 하위 도메인에도 HTTPS 강제를 적용합니다.
preload브라우저 preload 목록 등재 동의 — 첫 방문부터 HTTPS를 강제합니다.

실무 참고

관련 헤더

Content-Security-PolicyUpgrade-Insecure-Requests

관련 상태코드

스펙 근거