HSTS

Security

개요

HSTS(HTTP Strict Transport Security)는 서버가 `Strict-Transport-Security` 응답 헤더로 '앞으로 이 사이트는 무조건 HTTPS로만 접속하라'고 브라우저에 지시하는 보안 정책입니다.

한 번 이 헤더를 받은 브라우저는 정해진 기간 동안 해당 도메인에 대한 평문 HTTP 접속 시도를 스스로 HTTPS로 바꿔 버립니다.

자세히

해결하려는 문제는 '최초 접속의 평문 취약점'입니다. 사용자가 주소창에 `example.com`만 치면 브라우저는 먼저 `http://`로 접속을 시도하고, 서버가 301로 HTTPS로 리다이렉트합니다. 이 첫 평문 왕복을 공격자가 가로채면(SSL 스트리핑, 중간자 공격) HTTPS로의 업그레이드를 막고 트래픽을 훔칠 수 있습니다. HSTS는 브라우저가 이 도메인을 기억하게 해, 애초에 평문 요청을 만들지 않고 곧장 HTTPS로 가게 합니다.

헤더 지시어로 `max-age`(정책 유효 기간, 초), `includeSubDomains`(모든 서브도메인에 적용), `preload`가 있습니다. `preload`는 도메인을 브라우저에 내장된 HSTS 프리로드 목록에 등록해, '한 번도 방문한 적 없는' 최초 접속조차 평문 없이 HTTPS로 가게 하는 강력한 옵션입니다 — 다만 목록에서 빼기가 매우 어렵고 모든 서브도메인이 HTTPS를 지원해야 하므로 신중해야 합니다. 주의할 점은 HSTS를 켜기 전에 유효한 인증서와 전 경로 HTTPS 지원을 먼저 갖춰야 하며, 잘못 설정하면 사이트가 접속 불가가 될 수 있다는 것입니다.

관련 타입