보안 헤더 검사

보안 헤더는 서버가 모든 HTTP 응답에 덧붙이는 지시로, 브라우저에게 기본으로는 켜지 않는 보호를 켜라고 알려 줍니다: 주입된 스크립트 차단, HTTPS 강제, 프레임 삽입 거부, MIME 스니핑 중단. URL을 입력하면 이 검사기는 최종 응답을 가져와 여섯 개 헤더를 100점 만점으로 채점하고, 각 헤더마다 실제로 발견한 값을 보여 주며, 위험을 한 줄로 설명하고, 헤더가 없거나 약할 때 붙여넣을 Nginx 또는 Apache 설정을 제공합니다. 빠른 버전만 원하시면 웹사이트 상태 검사의 전체 보고서에 이미 보안 헤더 하위 점수가 포함되어 있습니다 — 이 페이지는 심층 버전입니다: 헤더별 등급과 수정, 그뿐입니다.

마지막 업데이트:

이것을 계속 감시하고 싶으신가요? myeventwatch로 무료 감시 — 만료 및 다운타임 알림, 카드 불필요.

심층 버전 — 상태 검사의 빠른 점수 옆에

웹사이트 상태 검사는 넓은 질문 — 이 사이트는 전체적으로 건강한가? — 에 답하고, 보안 헤더를 여러 하위 점수 중 하나로 그 답에 접어 넣습니다. 그것은 정기 검진에 맞는 형태이지만, 어떤 헤더가 점수를 잃었는지, 서버가 실제로 어떤 값을 보냈는지, 고치려면 설정에 무엇을 붙여넣어야 하는지는 알려 주지 못합니다. 이 페이지는 그 후속 작업을 위해 존재합니다: 한 번의 가져오기, 채점되는 여섯 개 헤더, 문자 등급, 그리고 없거나 약한 헤더마다 그것을 추가하거나 강화하는 정확한 Nginx와 Apache 줄. 여기에는 블랙박스가 없습니다 — 전체 채점표가 아래 사실 섹션에 공개되어 있고, 그것은 검사기가 채점에 사용하는 바로 그 표입니다.

검사 방식: 검사기는 입력한 URL을 요청하고, 리디렉션을 따라가며, 최종 응답의 헤더를 채점합니다 — 브라우저가 실제로 페이지를 만들 때 쓰는 응답입니다. 이것은 브라우저가 아닌 단순한 HTTP 가져오기입니다: JavaScript가 실행되지 않고, 하위 리소스가 로드되지 않으며, 다른 경로나 로그인 후에만 나타나는 헤더는 보이지 않습니다. 점수는 하나의 특정 층 — 이 여섯 가지 브라우저 대상 보호가 존재하고 강한지 — 만을 측정합니다. 사이트는 100점을 받아도 애플리케이션 버그를 안고 있을 수 있고, F를 받아도 침해된 적이 없을 수 있습니다. 등급은 가중치가 붙은 강화 체크리스트로 대하시고, 사이트 전체 보안에 대한 판결로 대하지 마세요.

영향 순서대로 고치기

점수의 대부분은 싸게 되찾을 수 있습니다. X-Content-Type-Options, 프레임 보호, Referrer-Policy는 각각 한 줄이며 보통의 사이트에서는 아무것도 깨뜨리지 않습니다. Strict-Transport-Security도 한 줄이지만, 모든 페이지와 하위 도메인이 실제로 HTTPS로 동작할 때만 보내세요 — 1년의 max-age는 브라우저가 당신에게 지키라고 요구할 약속입니다. Permissions-Policy는 페이지가 실제로 어떤 브라우저 기능을 쓰는지 10분쯤 생각해야 합니다. Content-Security-Policy는 점수가 가장 크고 위험도 가장 큽니다: 먼저 Content-Security-Policy-Report-Only로 배포하고, 위반 보고를 지켜보고, 깨지는 것을 고친 뒤에야 강제하세요. 동반 가이드인 보안 헤더 해설은 각 헤더가 실제로 무엇을 막는지, 왜 수정 순서가 이 순서인지를 차례로 설명합니다.

이웃 검사: 전송 보안은 이 이야기의 나머지 절반입니다 — SSL 채점기는 TLS 설정 자체를 채점하고, 이 페이지는 그 연결 위에서 서버가 말하는 것을 채점합니다. 헤더와 함께 가용성, DNS, 인증서 만료를 포함하는 넓은 정기 검진은 웹사이트 상태 검사로 돌아가세요.

방법에 대한 참고: 결과는 한 시점의 한 번 가져오기에 대한 스냅샷입니다. CDN과 다중 서버 구성은 요청마다 다른 헤더 집합으로 답할 수 있으므로, 놀라운 결과는 설정을 바꾸기 전에 한 번 다시 확인할 가치가 있고, 바꾼 뒤에도 다시 확인할 가치가 있습니다. 원본에서 추가한 헤더가 그 앞의 프록시를 항상 살아남지는 않기 때문입니다.

공개된 채점표

Content-Security-Policy — 35점좋음이란 강제되는 정책(Report-Only는 해당 없음)이 스크립트를 'unsafe-inline'과 'unsafe-eval'에서 멀리 떨어뜨리고, 리소스를 어디서 불러올 수 있는지 제한한다는 뜻입니다. 가장 무거운 가중치인데, CSP가 주입된 스크립트에 대한 주된 방어이기 때문입니다.
Strict-Transport-Security — 20점좋음이란 HTTPS로 전송되고 max-age가 최소 1년(31536000초)이라는 뜻입니다. includeSubDomains는 더 강화합니다. 짧은 max-age는 부분 점수를 받습니다.
프레임 보호 — 15점좋음이란 CSP frame-ancestors 지시문, 또는 DENY나 SAMEORIGIN으로 설정된 X-Frame-Options 헤더를 뜻하며, 다른 사이트가 클릭재킹을 위해 당신의 페이지를 프레임에 삽입할 수 없게 합니다.
X-Content-Type-Options — 10점좋음이란 유일한 값 nosniff를 뜻하며, 브라우저가 응답을 MIME 스니핑으로 다른 실행 가능한 종류로 바꿀 수 없게 합니다.
Referrer-Policy — 10점좋음이란 전체 URL을 다른 오리진에 절대 보내지 않는 정책 — strict-origin-when-cross-origin 또는 그보다 엄격한 것(same-origin, no-referrer) — 을 뜻합니다.
Permissions-Policy — 10점좋음이란 헤더가 존재하고, 카메라, 마이크, 위치 정보처럼 사이트가 쓰지 않는 강력한 브라우저 기능을 끈다는 뜻입니다.
Cross-Origin-Opener-Policy — 보너스채점되는 헤더들과 함께 보고되지만 점수는 없습니다: 페이지를 다른 오리진의 창에서 격리하며, 공개된 가중치가 위의 여섯 헤더 정확히 그대로 유지되도록 의도적으로 100점 밖에 둡니다.
등급95점 이상은 A+, 90+는 A, 80+는 B, 65+는 C, 50+는 D, 35+는 E, 35 미만은 F입니다. 점수는 헤더마다 발견된 값의 강도에 따라 주어지며, 없는 헤더는 그 행에서 0점입니다.

자주 묻는 질문

점수는 어떻게 계산되나요 — 블랙박스인가요?

아닙니다. 여섯 개 헤더는 고정된 공개 가중치를 가집니다 — CSP 35, HSTS 20, 프레임 보호 15, X-Content-Type-Options 10, Referrer-Policy 10, Permissions-Policy 10 — 합계 100입니다. 각 헤더는 검사기가 발견한 값의 강도에 따라 만점, 부분 점수, 또는 0점을 받고, 문자 등급은 위 사실 표의 구간을 따릅니다. Cross-Origin-Opener-Policy는 보너스로 보고되며 점수에 절대 영향을 주지 않습니다.

웹사이트 상태 검사와 무엇이 다른가요?

웹사이트 상태 검사는 넓은 검진 — 가용성, DNS, TLS, 만료 등 — 이며, 보안 헤더는 빠른 하위 점수로 나타납니다. 이 페이지는 헤더만 채점하지만 깊이 채점합니다: 각 헤더마다 발견된 정확한 값, 헤더별 판정과 점수, 쉬운 말로 설명한 위험, 그리고 붙여넣기용 Nginx 및 Apache 수정. 문제를 발견하려면 상태 검사를, 고치려면 이 페이지를 사용하세요.

어떤 응답이 채점되나요 — 제 사이트에는 리디렉션이 있습니다?

채점되는 것은 모든 리디렉션 이후 최종 응답의 헤더입니다. 그것이 브라우저가 페이지를 만드는 데 쓰는 응답이기 때문입니다. 결과는 최종 URL과 상태를 보여 줘 체인이 어디에 도착했는지 알 수 있습니다. 한 가지 주의: 이것은 브라우저가 아닌 정적 가져오기이므로 JavaScript가 실행되지 않습니다 — 따라서 프레임워크가 클라이언트 쪽에서만 추가하는 헤더나, 로그인 후 또는 다른 경로에서만 나타나는 헤더는 등급에 포함되지 않습니다.

제 사이트가 F를 받았습니다. 해킹당했다는 뜻인가요?

아닙니다. F는 최종 응답이 채점되는 여섯 헤더를 거의 또는 전혀 담지 않았다는 뜻입니다 — 기본 서버나 프레임워크 설치의 흔한 상태입니다. 이는 방문자의 브라우저가 받을 수 있는 보호를 받지 못하고 있다는 뜻이며, 사이트 자체가 침해됐는지에 대해서는 아무것도 말하지 않습니다. 영향 순서대로 수정을 진행하고 다시 검사하세요: 대부분의 사이트는 오후 한나절에 여러 등급을 오를 수 있습니다.

100점이면 제 사이트가 안전하다는 뜻인가요?

아닙니다 — 검사한 URL에서 이 여섯 헤더가 존재하고 강하다는 뜻입니다. 헤더는 하나의 강화 층입니다: 애플리케이션 버그, 약한 비밀번호, 오래된 소프트웨어, 깨진 TLS 설정을 고쳐 주지는 않습니다. 이 검사를 전송에 대해서는 SSL 채점기와, 더 넓은 그림에 대해서는 웹사이트 상태 검사와 함께 사용하세요.