현율 웹보안 진단센터

보안 헤더 설정 가이드

각 헤더의 역할과 권장값, 그리고 nginx·Apache·Next.js 설정 예시를 제공합니다. 코드 블록은 탭으로 환경을 전환하고 복사할 수 있습니다. 등급 산출 기준은 소개 페이지 에서 확인하세요.

핵심 헤더 (등급 산정)

등급은 아래 6개 헤더의 통과 개수로 결정됩니다.

Content-Security-Policy

브라우저가 로드할 리소스 출처를 제한해 XSS 공격을 완화합니다. 가장 강력한 보안 헤더이며, 설정 난이도가 높아 단계적으로 적용을 권장합니다.

add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'" always;
MDN 에서 더 알아보기 →

Strict-Transport-Security

브라우저가 HTTPS 로만 접속하도록 강제합니다. max-age 는 최소 120일(10368000초) 이상, includeSubDomains 권장.

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
MDN 에서 더 알아보기 →

X-Frame-Options

사이트가 iframe 에 포함되는 것을 차단해 클릭재킹 공격을 방어합니다. CSP frame-ancestors 가 현대적 대체재입니다.

add_header X-Frame-Options "DENY" always;
MDN 에서 더 알아보기 →

Referrer-Policy

다른 사이트로 이동할 때 Referer 헤더에 포함되는 정보 양을 제어합니다. strict-origin-when-cross-origin 권장.

add_header Referrer-Policy "strict-origin-when-cross-origin" always;
MDN 에서 더 알아보기 →

Permissions-Policy

카메라·마이크·위치정보 등 브라우저 기능에 대한 권한을 선언합니다. 사용하지 않는 기능은 () 로 차단하세요.

add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
MDN 에서 더 알아보기 →

X-Content-Type-Options

브라우저가 응답의 MIME 타입을 추측하지 않도록 해 MIME sniffing 공격을 방어합니다. 값은 nosniff 하나뿐입니다.

add_header X-Content-Type-Options "nosniff" always;
MDN 에서 더 알아보기 →

참고 헤더 (등급 미반영)

함께 평가·표시하지만 등급에는 반영하지 않습니다 (Upcoming, 참고용).

Cross-Origin-Opener-Policy

최상위 문서가 교차 출처 문서와 browsing context group 을 공유하지 않도록 해 Spectre 같은 사이드채널 공격을 완화합니다.

add_header Cross-Origin-Opener-Policy "same-origin" always;
MDN 에서 더 알아보기 →

Cross-Origin-Embedder-Policy

교차 출처 리소스를 명시적 허가 없이 로드하지 못하게 해 COOP 과 함께 사이트 격리를 완성합니다. SharedArrayBuffer 등 기능 활성화 조건입니다.

add_header Cross-Origin-Embedder-Policy "require-corp" always;
MDN 에서 더 알아보기 →

Cross-Origin-Resource-Policy

다른 출처에서 이 리소스를 로드할 수 있는 범위를 제어합니다. same-site 이상 권장.

add_header Cross-Origin-Resource-Policy "same-site" always;
MDN 에서 더 알아보기 →

X-XSS-Protection

구형 브라우저의 XSS 필터 제어 헤더. 현대 브라우저에서는 지원 중단되었으며 0 으로 설정하거나 아예 사용하지 않는 것이 권장됩니다.

add_header X-XSS-Protection "0" always;
MDN 에서 더 알아보기 →