CSP 생성기
Content Security Policy 지시어 설정 → 헤더 값·서버 설정 즉시 생성
CSP(Content Security Policy)란?
CSP는 브라우저가 로드할 수 있는 리소스 출처를 제한하는 HTTP 응답 헤더입니다. XSS(크로스 사이트 스크립팅), 데이터 인젝션, 클릭재킹 등의 공격을 방어합니다. script-src에 허용된 출처 외의 스크립트는 실행이 차단됩니다.
자주 묻는 질문
'self'와 '*'의 차이는?
'self'는 현재 페이지와 동일한 오리진(프로토콜+도메인+포트)만 허용합니다. '*'는 모든 출처를 허용하므로 CSP의 보안 효과를 완전히 없앱니다. 가능한 한 구체적인 도메인을 명시하세요.
'unsafe-inline'과 'unsafe-eval'을 피해야 하는 이유는?
'unsafe-inline'은 인라인 스크립트/스타일을 허용해 XSS 공격이 가능해집니다. 'unsafe-eval'은 eval()과 유사한 함수를 허용합니다. 대신 nonce-{랜덤값} 또는 hash 기반으로 특정 인라인 코드만 허용하세요.
CSP를 Report-Only 모드로 테스트하는 방법은?
Content-Security-Policy-Report-Only 헤더를 사용하면 차단하지 않고 위반 사항만 보고합니다. report-uri 지시어로 보고 URL을 지정하고 차단 없이 테스트하세요.
Google Analytics와 CSP 충돌 해결법은?
script-src에 'https://www.googletagmanager.com', img-src에 'https://www.google-analytics.com'을 추가하세요. GTM을 사용한다면 nonce 기반 설정이 더 정확합니다.
default-src와 다른 지시어의 관계는?
default-src는 지정되지 않은 다른 지시어의 폴백 역할을 합니다. script-src를 명시하면 script에 대해서는 default-src를 무시합니다. 각 지시어를 개별적으로 세밀하게 설정하는 것이 좋습니다.
CSP 메타 태그와 HTTP 헤더의 차이는?
<meta http-equiv="Content-Security-Policy">는 HTML에 직접 포함할 수 있어 서버 설정 없이도 사용 가능합니다. 단, frame-ancestors, sandbox, report-uri 등 일부 지시어는 메타 태그에서 지원되지 않습니다.
nonce 기반 CSP란?
서버에서 요청마다 랜덤 nonce를 생성해 스크립트에 nonce="값"으로 추가하고 CSP에 'nonce-값'으로 허용합니다. 인라인 스크립트를 안전하게 허용하는 권장 방법입니다.
object-src 'none'이 권장되는 이유는?
Flash, Java 등 레거시 플러그인은 보안 취약점이 많습니다. object-src 'none'으로 플러그인을 완전히 차단하는 것이 현대 웹 보안 모범 사례입니다.