-
what is HSTS(HTTP Strict Transport Security)?What is 2025. 8. 9. 18:48
오늘은 HSTS, 정식 명칭으로는 HTTP Strict Transport Security에 대해 이야기해보겠습니다.
제가 Burp Suite로 테스트를 하다가 데이터를 가로채지 못하는 상황이 있었어요.
이유를 찾아보니, 바로 이 HSTS라는 기능이 적용되어 있었던 거죠.
HSTS란 무엇일까요?
HSTS는 간단히 말해, 웹사이트가 브라우저에게 이렇게 말하는 거예요.
나하고 연결할 땐 꼭 HTTPS, 그러니까 안전하게 암호화된 길로만 와!
만약 사용자가 실수로 HTTP, 즉 안전하지 않은 길로 접속하려 해도, 브라우저가 이를 자동으로 HTTPS로 바꿔줍니다.
그래서 중간에서 누군가 몰래 데이터를 훔치려고 해도, 그 길 자체를 못 쓰게 막아버리는 거죠.
정식 규칙에는 이런 것들이 있습니다
HSTS는 RFC 6797이라는 표준 문서에 정의되어 있는데요. 주요 요소는 다음과 같습니다.
- Strict-Transport-Security: 브라우저에게 “HTTPS만 써라”라고 알려주는 메시지
- max-age: 이 규칙을 얼마나 오래 기억할지, 초 단위로 지정
- includeSubDomains: 하위 도메인까지 전부 이 규칙을 적용할지 여부
- preload: 브라우저가 처음부터 이 사이트를 HTTPS로만 접속하게 미리 등록하는 옵션
그렇다면, HSTS는 어떻게 동작할까요?
- 사용자가 처음 사이트에 접속합니다.
- 서버가 Strict-Transport-Security라는 헤더를 브라우저에 보냅니다.
- 브라우저는 이 내용을 기억하고, 정해진 기간 동안 HTTP 요청을 차단합니다.
- 이후에는 HTTP 주소를 입력해도 자동으로 HTTPS로 바뀝니다.
그럼 HSTS도 뚫릴 수 있을까요?
네, 일부 상황에서는 가능합니다. 예를 들어,
- 브라우저에서 HSTS 기록을 삭제했을 때
- HSTS를 지원하지 않는 오래된 브라우저를 사용할 때
- 또는 하위 도메인에 HSTS가 적용되지 않았을 때
HSTS가 없으면, 처음 접속할 때 HTTP를 거쳐서 HTTPS로 넘어가는 순간이 생길 수 있습니다.
그 짧은 순간을 노리는 공격이 바로 SSL Strip입니다.
SSL Strip, 들어본 적 있나요?
SSL Strip은 원래 HTTPS로 가야 할 연결을, 중간에서 억지로 HTTP로 유지시키는 공격입니다.
이렇게 되면 사용자는 안전하다고 착각하지만, 사실 데이터는 암호화 없이 전달되고 있고, 공격자가 그걸 볼 수 있는 거죠.예를 들어,
- 사용자가 http://example.com에 접속합니다.
- 서버는 “HTTPS로 연결하세요”라고 응답합니다.
- 그런데 공격자가 이 응답을 가로채서 “그냥 HTTP로 가라”라고 바꿔버립니다.
- 사용자는 그대로 HTTP로 연결되고, 그 사이에 공격자가 모든 데이터를 들여다보는 겁니다.
HSTS는 브라우저 차원에서 HTTP 요청 자체를 막기 때문에, 이런 공격을 예방할 수 있습니다.
SSL Strip+라는 도구도 있습니다
이건 SSL Strip을 조금 더 발전시킨 형태입니다.
공격자가 DNS 스푸핑, 즉 웹주소를 속이는 기술을 이용해서, HSTS가 없는 하위 도메인으로 접속하게 유도합니다.
그렇게 되면, 여전히 HTTP로 접속할 수 있게 되고, 데이터가 노출될 수 있는 거죠.
HSTS 적용할 때 주의할 점도 있습니다
- 먼저 HTTPS 환경이 완전히 안정화된 뒤 적용해야 합니다. 그렇지 않으면 사용자 접속이 막힐 수 있어요.
- max-age 값은 처음에는 짧게 설정해서 테스트한 뒤, 점차 늘리는 게 좋습니다.
- 운영 환경에 적용하기 전에 테스트 환경에서 충분히 검증하는 게 안전합니다.
HSTS Preload List에 등록하는 방법
- https://hstspreload.org에 접속합니다.
- 다음 조건을 만족해야 합니다:
- max-age ≥ 1년(31536000초)
- includeSubDomains 적용
- preload 적용
- 등록되면 주요 브라우저에서 처음부터 HTTPS만 사용하게 됩니다.
단, 되돌리기 어려우니 신중하게 결정해야 합니다.
브라우저 지원 상황
- Chrome, Firefox, Edge, Safari 등 대부분의 최신 브라우저는 HSTS를 지원합니다.
- 하지만 일부 오래된 모바일 브라우저는 지원이 제한적입니다.
- Preload로 등록하면, 캐시를 지워도 계속 HTTPS로만 접속하게 됩니다.
HTTP 응답 헤더 예시
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
📦 요약 – HSTS 쉽게 이해하기
HSTS는 웹사이트가 브라우저에게
"이 사이트는 HTTPS(안전한 연결)만 사용하세요"라고 알려주는 보안 규칙입니다.- 왜 필요한가? HTTP로 접속하면 중간에서 데이터가 훔쳐질 수 있기 때문
- 어떻게 동작하나? 첫 접속 시 규칙을 보내고, 브라우저가 이를 기억해 자동으로 HTTPS로 변경
- 장점: SSL Strip 같은 중간자 공격을 차단
- 주의점: 하위 도메인 포함 설정(includeSubDomains)과 Preload 등록이 중요
'What is' 카테고리의 다른 글
What is Hooking? (4) 2025.08.13 what is Rooting? (2) 2025.08.11 what is Keylogging? (4) 2025.08.09