HSTS는 무엇입니까?
HSTS (HTTP Strict Transport Security)는 브라우저가 HTTPS를 통해 웹 사이트와 상호 작용하는 웹 보안 메커니즘입니다, 절대 HTTP. 브라우저가 HSTS 헤더를 볼 때, 자동으로 HTTPS에 대한 모든 미래 요청을 업그레이드하고 사용자가 명시적으로 http://.를 입력하더라도 일반 HTTP를 통해 연결할 수 없습니다
HSTS 매트릭스
유효한 SSL 인증서도 있지만 취약점은 다음과 같습니다.
SSL 스트리핑 공격
1. 사용자 유형 "example.com"(https://)
2. 공격자는 초기 HTTP 요청을 방해합니다.
3. HTTPS에 대한 공격 프록시, HTTP를 사용자에게 제공합니다
4. 사용자는 그들이 안전하다고 생각하지만 공격자는 모든 것을 볼
HSTS는 브라우저가 초기 HTTP 요청을 만들지 못하는 것을 방지합니다.
HSTS의 장점
- 상급 공격: HTTP 삭제 가능
- Protects 사용자 북마크 : 심지어 오래된 HTTP 북마크가 HTTPS되었다
- 혼합 콘텐츠 : 또한 HTTPS로 강제
- 성능: HTTP→HTTPS 리디렉션 없음
HSTS 헤더 증후군
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
채용 정보
| 제품 정보 | 이름 * |
|---|---|
| 최대 일 | HSTS를 기억하는 두 번째 (31536000 = 1 년) |
| 하위 도메인 | 모든 하위 도메인에 HSTS 적용 |
| 기타 제품 | 브라우저 사전 로드 목록 포함 |
HSTS 구축
# # # # Nginx를
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
아파치
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
₢ 킹
SSL/TLS → Edge 인증서 → HTTP Strict Transport Security에서 사용 가능
# # # # Express.js
const helmet = require('helmet');
app.use(helmet.hsts({
maxAge: 31536000,
includeSubDomains: true,
preload: true
}));
HSTS 사전 로드 목록
HSTS 사전 로드 목록은 HTTPS에서만 접근해야하는 브라우저로 하드 코딩 된 도메인 목록입니다. 이것은 첫번째 HTTP 요구 취약점을 삭제합니다.
# # # # # 사전 로드 요구 사항
1. 유효한 SSL 인증서
2. 모든 HTTP를 HTTPS로 리디렉션
3. HSTS 헤더:
- 최소 31536000 (1년)
- preload 지시어
Preload List에 제출
1. 요구 사항: hstspreload.org를 사용하여 확인
2. 도메인 등록 : hstspreload.org에서 도메인 등록
3. 포함에 대한 보증: 브라우저 업데이트에 대한 몇 달 소요
공지사항
Preload는 영구 (실행적으로). 목록에서 제거는 달이 걸리고 브라우저 업데이트를 요구합니다. 모든 하위 도메인이 HTTPS를 무한하게 지원할 경우에만 사전 로드됩니다.HSTS 검사
Browser DevTools :1. DevTools → 네트워크 탭 열기
2. 사이트로드
3. Strict-Transport-Security에 대한 응답 헤더 확인
컬을 사용 :curl -I https://example.com | grep -i strict
DomScan 사용 :
curl "https://domscan.net/v1/health?domain=example.com"
# Reports hasHSTS in security details
사전 로드 상태:
hstspreload.org 를 확인하여 도메인이 사전 로드되는지 확인하십시오.
HSTS 배포 전략
단계 1: 짧은 최대 나이
시험에 짧은 최대 나이로 시작:
Strict-Transport-Security: max-age=300무언가가 깨지면 사용자가 5 분 동안 캐시됩니다.
단계 2: 증가 기간
HTTPS를 확인 한 후는 어디에 있습니까?
Strict-Transport-Security: max-age=86400
단계 3: Subdomains를 추가하십시오
모든 하위 도메인 지원 HTTPS :
Strict-Transport-Security: max-age=2592000; includeSubDomains
단계 4: 가득 차있는 배치 + Preload
안정되어 있는 가동의 달 후에:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload다음 목록 제출.
일반적인 HSTS 문제
HTTPS없이 하위 도메인 : includeSubDomains는 하위 도메인을 깰 개발 환경 : HSTS는 생산에서 시렁이는 로컬 dev CDN/Proxy 헤더: HSTS 헤더는 중간에 의해 벗겨지지 않습니다 혼합 내용: 모든 리소스는 HTTPS이어야합니다. HSTS는 임베디드 HTTP 리소스를 수정하지 않습니다.HSTS는 모든 웹 사이트가 민감한 데이터를 처리하고 모든 HTTPS 사이트를 위해 강력하게 권장합니다.