HSTS 제목(엄격한 운송 안전) 설명
원문은 여기서 찾을 수 있다. HSTS on AppSec Monkey.
HSTS란 무엇입니까?
HTTP Strict Transport Security(HTTP는 보안을 엄격히 전송함)는 브라우저가 도메인과 암호화되지 않은 연결을 방지하는 선택적 브라우저 보안 기능입니다.
암호화되지 않은 연결이란
http
대신 https
(또는 ws
로 웹 소켓을 표시하는 것) 을 사용하는 것을 가리킨다.다음과 같이
wss
제목을 사용하여 웹 사이트를 보호할 수 있습니다.Strict-Transport-Security: <options>
3개의 옵션이 있습니다Strict-Transport-Security
, max-age
, includeSubdomains
.우리는 1분 안에 이 문제들을 토론할 것이지만, 우선 웹 응용 프로그램에서 HST를 실현하는 것이 왜 이렇게 중요한지 설명해 보겠습니다.왜 HST가 중요합니까?
HSTS 헤더는 웹 응용 프로그램에 대한 네트워크 공격을 방지합니다.사용하지 않는 경우 응용 프로그램의 작동 방법은 다음과 같습니다.
시나리오 1: HST 없음, 공격자 없음
그런데 인터넷에 공격자가 있다면?HTTPS는 도움이 되지 않습니다.내 뜻을 말해줄게.
시나리오 2: HST 없음, 네트워크에 공격자 있음
아이고.그것은 좋지 않다.
이제 HSTS 헤드가 웹 응용 프로그램을 보호할 때 어떤 일이 일어나는지 살펴봅시다.
시나리오 3: HST
HSTS가 어떻게 공격을 막았는지 볼까요?하지만 지금 물어볼지도 몰라...
만약 사용자가 이 사이트를 처음 방문한다면 어떻게 합니까?
아주 좋은 문제!만약 사용자가 처음으로 사이트를 방문한 경우 사용자의 브라우저는 아직 HSTS 제목을 볼 기회가 없다.
이러한 상황에서 공격은 여전히 가능하다. 왜냐하면 공격자가 실제 웹 서버에서 사용자에게 브라우저가 HST를 사용하기 전에 연결을 인수했다고 알려줄 기회가 있기 때문이다.
다행히도, 해결 방안이 하나 있습니다. 본문이 끝날 때, 당신은 그것의 모든 것을 이해할 수 있을 것입니다.이것은 세 번째 옵션
preload
과 관련이 있지만, 다른 두 가지 옵션을 먼저 봅시다!최대 연령 매개 변수
HSTS 헤더의 첫 번째 매개변수는
preload
입니다.이것은 브라우저가 제목을 보고 제목을 기억하기를 원하는 시간(초)을 가리킨다.예를 들어 아래 제목은 보내는 도메인에 대해 HSTS를 1분간 활성화합니다.그리고 브라우저는 60초 안에 이 영역과 암호화되지 않은 연결을 거부합니다.
Strict-Transport-Security: max-age=60
이렇게 짧은 시간은 통상적으로 매우 유용하지 않다.더 흔히 볼 수 있는 것은 1년 또는 2년의 가치를 보는 것이다. 예를 들어 다음과 같다.# 1 year
Strict-Transport-Security: max-age=31536000
# 2 years
Strict-Transport-Security: max-age=63072000
브라우저는 제목을 볼 때마다 시간을 갱신합니다.☝️ Note
When implementing HSTS in a production environment, it's good to start with a small
max-age
and then slowly ramp it up to a year or two years. This way, you can quickly recover if something breaks.
HST 취소
max-age
매개 변수의 두 번째 용례는 HST를 취소하는 것이다. 만약 당신이 그것을 벗어나고 싶다면.반환max-age
이 0이면 브라우저에서 제목이 표시되면 보호기가 제거됩니다.# Cancel HSTS
Strict-Transport-Security: max-age=0
includeSubdomains 매개 변수
두 번째 매개 변수는
max-age
입니다.기본적으로 HSTS 헤더는 서비스를 제공하는 도메인에만 영향을 미칩니다.즉 includeSubdomains
가 보내면 https://www.example.com
만 보호되고 www.example.com
만 보호되지 않는다는 것이다.하위 도메인을 포함하려면 다음과 같이
foo.www.example.com
를 추가합니다.# Store for 2 years, apply also to subdomains
Strict-Transport-Security: max-age=6307200; includeSubdomains
☝️ Note
The
includeSubdomains
directive is a requirement for preloading, which we'll look at next.
HSTS 사전 로드
세 번째 매개변수
includeSubdomains
는 HSTS 사전 로드에 유용합니다.앞서 언급한 바와 같이 프리로드는 사용자가 사이트를 처음 방문하더라도 HSTS 헤더를 사용하여 사이트를 보호할 수 있는 메커니즘이다.
구글에 웹 사이트를 보호하라고 알려주면 모든 주요 브라우저가 원본 코드를 바꾸고 HSTS 헤더를 미리 불러오는 것을 볼 수 있다.
농담하지 마!JSON 파일here이 올바르게 표시됩니다.자세히 보면 앱secmonkey가 저기 있어요!
{ "name": "appsecmonkey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true },
그러나 도메인 사전 로드를 활성화하기 위한 몇 가지 사전 요구 사항이 있습니다.우선,
preload
명령을 사용하여 HSTS 헤더를 제공해야 합니다.또한 preload
는 1년보다 커야 하며 max-age
를 추가해야 합니다.# Store for two years, also apply to subdomains, enable preloading
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
또한 도메인은 유효한 TLS 인증서를 HTTPS 포트(443)에 반환하고 포트 80에서 HTTPS(포트 80이 활성화된 경우)로 리디렉션해야 합니다.이러한 요구 사항이 충족되면 https://hstspreload.org/로 이동하여 도메인을 다음과 같이 커밋하십시오.
결론
HTTPS는 웹 응용 프로그램의 사용자를 네트워크 공격으로부터 보호하기에 부족합니다.인터넷에 암호화되지 않은 사이트가 있는 한 브라우저 공급업체는 암호화되지 않은 연결을 완전히 비활성화할 수 없다.
다행히도 암호화되지 않은 연결이 필요 없는 사이트에는 가입 메커니즘이 선택되어 있다.이것이 HSTS의 제목입니다.
생산에서 HST를 실시할 때는 느린
includeSubdomains
부터 시작해서 천천히 높이는 것이 좋다.마지막으로 hstspreload에 영역을 제출함으로써 HSTS 헤더를 주요 웹 브라우저의 원본 코드에 미리 불러올 수 있습니다.조직하지만 네가 이렇게 하기 전에 곰곰이 생각해 봐라.취소는 느리고 고통스러운 과정이다.
네트워크 보안 리스트 전자 표 가져오기!
☝️ Subscribe AppSec Monkey의 이메일 목록에 들어가서 우리의 가장 좋은 내용을 당신의 우편함에 직접 보내고 2021 웹 응용 프로그램 보안 검사표 전자 표를 무료로 받아서 환영 선물로 드립니다!
여기 멈추지 마.
이 문서를 좋아하신다면 AppSec Monkey에서 제공한 다른 응용 프로그램 보안 안내서도 보실 수 있습니다.
읽어주셔서 감사합니다.
Reference
이 문제에 관하여(HSTS 제목(엄격한 운송 안전) 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/appsecmonkey/hsts-header-strict-transport-security-explained-ab1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)