Content-Security-Policy 빌더
디렉티브별 입력 폼으로 Content-Security-Policy 헤더 구성. 각 디렉티브는 공백 구분 소스 리스트('self'·'none'·'unsafe-inline' 같은 키워드, 스킴/호스트 소스) 받음. unsafe-inline·unsafe-eval·와일드카드 포함 정책 플래그, 빈 디렉티브 출력에서 제외, 응답 헤더 형식과 동등한 <meta> 태그 둘 다 생성. 새 정책 프로덕션 롤아웃 중엔 report-only 모드로 전환.
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; connect-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; connect-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'">
빈 디렉티브는 default-src로 폴백. default-src 'self' 먼저 설정 후 개별 소스 좁히기.
사용법
- 프리셋에서 시작(Strict는 모두 'self', Relaxed는 인라인·와일드카드 허용, API only는 내비게이션 차단).
- 각 디렉티브 편집 — 비우면 제외.
- 새 정책 출시 시 report-only 켜기: 위반은 보고되지만 차단되지 않음.
자주 묻는 질문
- 헤더 vs <meta> — 뭐 써?
- HTTP 헤더 우선. <meta>는 응답 헤더 편집 불가일 때(정적 호스트 등) 편리하지만 frame-ancestors·report-uri/report-to 정의 불가 → 항상 덜 강력.
- 와일드카드가 왜 경고?
- 소스 리스트의 *는 임의 URL 매치 → 정책 무력화. 특정 오리진에 핀하거나 'self' 사용 — 진짜 서드파티 스크립트 필요하면 명시적으로 나열.
관련 도구
CSP 해시 생성기
Content-Security-Policy로 화이트리스트하려는 인라인 <script>·<style>의 sha256/384/512 base64 해시 계산.
HSTS 헤더 빌더
Strict-Transport-Security 헤더 구성 — max-age·includeSubDomains·preload, preload 리스트 자격 실시간 체크.
SPF 레코드 빌더
메커니즘·IP·include로 SPF TXT 레코드 작성, 실시간 DNS 조회 카운트와 경고.
Permissions-Policy 헤더 빌더
`Permissions-Policy` 응답 헤더 빌드 — camera·microphone·geolocation·payment·fullscreen 등 20+ 브라우저 기능을 오리진 허용 리스트로 토글.
Referrer-Policy 헤더 빌더
Referrer-Policy 값 선택 → 송출 요청이 보낼 `Referer` 헤더 정확히 확인 — 동일 오리진, 크로스 오리진 HTTPS, HTTPS→HTTP 다운그레이드.
/.well-known/* URI 레퍼런스
IANA 등록 well-known URI 검색 카탈로그 — `security.txt`·`openid-configuration`·`apple-app-site-association`·`acme-challenge` 외 30+개, RFC 레퍼런스·사용 사례 포함.