HSTS는 웹 보안 응답 헤더입니다. 이름은 "HTTP Strict Transport Security"의 약어입니다. HSTS 헤더의 기능은 브라우저가 HTTPS를 사용하여 웹사이트에 연결하도록 하는 것입니다.
팁: HTTPS는 암호화를 사용하여 웹 연결을 수정하거나 모니터링하려는 해커로부터 웹 연결을 보호합니다. HTTP에는 이러한 보호 기능이 없으므로 적절한 위치에 있는 해커가 HTTP 트래픽을 모니터링하고 수정할 수 있습니다.
웹 응답 헤더는 웹 요청에 응답할 때 서버에서 보내는 메타 데이터 조각입니다. 이러한 헤더의 하위 집합은 웹 사이트와 사용자의 보안을 강화하는 것이 목적이므로 보안 헤더라고도 합니다.
HSTS 헤더에는 두 개의 필수 부분과 두 개의 선택적 부분이 있습니다. 헤더 이름 "Strict-Transport-Security"와 "max-age" 연산자 및 값은 모두 필수입니다. 다른 쌍의 연산자인 "includeSubDomains" 및 "preload"도 때때로 사용됩니다.
브라우저가 HSTS 헤더가 포함된 HTTPS 응답을 수신하면 "max-age" 타이머 기간 동안 독점적으로 HTTPS를 사용하여 이 웹사이트와 모든 리소스에 연결하라는 지시를 받습니다. "Max-age"는 브라우저가 설정을 기억해야 하는 기간을 설명하는 변수입니다. "max-age"의 값은 초 단위로 나열되며 권장 값은 1년인 "31536000"입니다.
각 후속 페이지 로드와 함께 재설정되는 이 타이머의 지속 시간 내에서 브라우저는 HTTPS 연결을 요구하고 모든 HTTP 리소스를 거부합니다. 이는 사용자와 웹 서버 사이의 해커가 사용자가 수신하는 응답을 조작할 수 있는 중간자 공격으로부터 보호합니다.
이것이 당신을 보호하는 주요 지점은 첫 번째 연결입니다. 일반적으로 웹 사이트에 연결할 때 HTTP 웹 사이트를 요청한 다음 HTTPS 웹 사이트로 전달할 수 있습니다. 불행히도 중간자 위치에 있는 해커는 이 HTTPS로의 업그레이드를 방지하고 웹사이트에서 사용자의 활동을 훔치거나 모니터링할 수 있습니다. 그러나 일단 HSTS 헤더가 브라우저에 표시되면 브라우저는 HTTPS를 통해 첫 번째 연결도 만들어 해커로부터 사용자를 보호합니다.
HSTS는 또한 HTTP를 통해 전달되는 경우 공격자가 악의적으로 수정할 수 있는 안전하지 않은 리소스가 로드되는 것을 방지합니다.
"includeSubDomains" 연산자는 헤더가 웹사이트의 모든 하위 도메인에도 적용되어야 함을 나타내는 데 사용됩니다.
HSTS 사전 로드 목록
웹 사이트에 처음 연결할 때 HSTS가 여전히 사용자를 보호하지 않는다는 것을 알 수 있습니다. 여기에서 "예압" 연산자가 등장합니다. 웹사이트는 HSTS 사전 로드 목록에 포함되도록 스스로를 제출할 수 있습니다. 이 경우 "예비 로드" 운영자는 필수 지표입니다. HSTS 사전 로드 목록은 정기적으로 업데이트되고 브라우저에 저장됩니다. 사이트가 해당 목록에 포함된 경우 브라우저는 HSTS 보호를 해당 목록에 적용합니다. 이것은 브라우저가 HSTS 응답 헤더를 보기 전의 첫 번째 연결에서도 발생합니다.
팁: HSTS 사전 로드 목록에 추가하려면 1년 이상의 "최대 연령"이 필요합니다.
HSTS 관련 문제
HSTS의 주요 포인트 중 하나는 HTTPS 연결에 문제가 있는 경우 오류 메시지를 표시한다는 것입니다. 추가 보안 예방 조치로 사용자는 HSTS 오류 메시지를 우회할 수 없어야 합니다. 일반 HTTPS 오류는 가능하기 때문입니다.
불행히도 회사가 전체 웹사이트와 웹사이트에서 사용되는 모든 리소스가 HTTPS를 지원하기 전에 HSTS를 출시하면 문제가 발생할 수 있습니다. 이 경우 사용자는 우회할 수 없는 HSTS 보안 오류 메시지를 보기 시작하여 본질적으로 웹 사이트를 완전히 손상시킵니다. 최악의 부분은 HSTS 헤더를 제거하는 것만으로는 해당 사용자의 문제가 해결되지 않는다는 것입니다. 사용자의 브라우저는 잠재적으로 몇 달 동안의 "최대 사용 기간" 동안 HSTS를 계속 적용할 것이기 때문입니다.
따라서 헤더를 처음 배포할 때 짧은 "max-age"를 사용하는 것이 매우 중요합니다. 문제가 있는 경우 발견된 짧은 시간 동안만 지속됩니다. 웹사이트가 HSTS와 완전히 호환된다고 확신할 때만 긴 HSTS 타이머를 구성해야 합니다.
팁: "최대 연령"을 0으로 설정하는 것도 가능합니다. 이렇게 하면 저장된 HSTS 항목을 보는 사람에게서 기본적으로 제거됩니다. 이것은 문제가 있는 경우 도움이 될 수 있지만 사용자가 다시 시도하기로 결정한 경우에만 영향을 미칩니다.