웹 보안 설정

CSP 생성기배포 전에 적용 지시어 확인

정책 텍스트와 지시어를 편집하고 헤더, 위험 알림, 단일 요청의 정적 결과를 확인합니다.

CSP 생성기

정책 텍스트

지시어 편집기

현재 결과

단일 요청 소스 검사

이 정적 예시에서는 소스가 일치하지 않음

모델링한 소스 중 이 URL과 일치하는 항목이 없습니다.

적용 지시어: script-src · 대체 지시어 사용

정책 알림

모델링한 문제는 없습니다. 배포 승인은 아닙니다.

파싱한 지시어

지시어 6개 중 6개 표시

  • default-src 'self'
  • script-src 'self'
  • img-src 'self' data:
  • object-src 'none'
  • base-uri 'self'
  • frame-ancestors 'none'

정책, 도메인, 예시 URL은 이 브라우저에서만 처리하며 네트워크 요청을 보내지 않습니다.

Report-Only는 위반 가능성을 관찰할 뿐 로드를 차단하지 않습니다. 보고서를 보내려면 수신 엔드포인트가 필요하며 이 페이지는 전송하거나 수신하지 않습니다.

지시어 6개 · 알림 0개

외부 스크립트가 갑자기 로드되지 않을 때 CSP 생성기는 어떤 지시어가 적용되는지 보여 줍니다. 기본 예시는 example.com 페이지가 cdn.example.com 스크립트를 요청하므로 일부러 불일치가 표시됩니다. 그대로 배포할 정책은 아닙니다.

이 CSP 정책 생성기는 텍스트와 지시어 편집을 한 초안으로 묶습니다. CSP 헤더 검증기처럼 위험한 구성을 알려 주지만, 복잡한 배포 판단을 단일 보안 점수로 바꾸지는 않습니다.

CSP 생성기를 쓰는 이유

실제로 적용된 소스 보기

CSP 생성기는 리소스 종류에 맞는 지시어를 고르고 필요할 때만 default-src로 되돌아갑니다. 기본 CDN 스크립트는 script-src의 self와 다릅니다. 정확한 CDN 호스트를 추가하면 그 요청에 대한 정적 결과만 바뀝니다.

CDN 스크립트 요청이 정책 소스 목록과 비교되어 차단 경로와 일치 경로로 나뉜 그림.

알림을 지시어와 함께 읽기

콘텐츠 보안 정책에서는 none 혼용과 중복 지시어를 다르게 해석해야 합니다. none은 다른 소스와 섞이면 무시되고 중복 지시어는 첫 항목이 적용됩니다. Report-Only 관찰 결과도 실제 차단과 분리합니다.

각 지시어의 알림 카드와 강제 적용 및 Report-Only 모드를 구분한 그림.

복사하기 전에 결과 해석하기

01

일부러 거부되는 예시로 시작

example.com 페이지에서 cdn.example.com 스크립트를 읽는 예시입니다. 적용된 script-src와 대체 지시어 표시를 본 다음 실제 URL로 바꾸세요.

02

배포 모드와 nonce 예시 분리

Report-Only는 헤더 이름을 바꾸지만 요청을 차단하지 않습니다. report-to나 report-uri가 없으면 보고서 대상도 없습니다. nonce 버튼의 값은 정책 초안에 자동 삽입되지 않습니다.

03

결과의 최신 상태 확인

자동 검사는 변경 뒤 350밀리초를 기다립니다. 끄면 버튼이나 Ctrl/Cmd + Enter로 실행하세요. 입력이 바뀌면 복사와 다운로드가 즉시 비활성화되며, 지우기와 예시 불러오기는 미리 보기와 한 번의 실행 취소를 제공합니다.

정책 작업대에서 확인할 항목

텍스트와 지시어 동시 편집

CSP 생성기는 정책 값 또는 완전한 CSP 헤더 한 줄을 받습니다. 알 수 없는 지시어와 중복 순서를 남기며, 구문 오류가 나도 원문을 지우지 않습니다.

넓은 허용 범위 설명

CSP 헤더 검증기는 unsafe-inline, unsafe-eval, 단독 *, 넓은 스킴, 빠진 기본 지시어, none 혼용을 지적합니다. 라이브 페이지를 망가뜨릴 수 있으므로 자동 삭제하지 않습니다.

외부 요청 하나만 시험

페이지와 리소스의 HTTP(S) URL을 비교해 적용 지시어와 대체 경로를 표시합니다. 경로 소스, strict-dynamic, nonce 문맥이 필요할 때는 판단 불가로 표시합니다.

현재 헤더만 내보내기

지시어 순서를 지킨 채 강제 적용 또는 Report-Only 헤더를 생성합니다. 정책이나 예시 요청을 수정하면 이전 결과의 복사와 다운로드가 즉시 막힙니다.

정적 검사로 알 수 없는 것

실제 사이트를 스캔하지 않음
이 CSP 정책 생성기는 사이트, 리소스, 실제 응답 헤더를 가져오지 않습니다. 붙여 넣은 정책 하나만 분석하므로 알림이 없다고 배포된 사이트가 안전하다고 증명할 수 없습니다.
default-src의 범위를 구분
default-src는 없는 가져오기 지시어를 대신하지만 base-uri, form-action, frame-ancestors는 대신하지 않습니다. 여러 정책, 리디렉션, 인라인 코드, 브라우저 차이도 한 건의 정적 요청 검사에서는 제외됩니다.
nonce 예시는 배포 설정이 아님
표시된 값은 브라우저에서 만든 임시 난수입니다. 서버에서 응답마다 새로 만들고 헤더와 허용하는 요소에 같은 값을 사용해야 합니다.
Report-Only에는 보고 대상이 필요
Content-Security-Policy-Report-Only는 위반 가능성을 관찰할 뿐 로드를 막지 않습니다. report-to 이름은 배포 시 Reporting-Endpoints 헤더와 연결해야 하며 이 페이지는 보고서를 받지 않습니다.
동등한 meta 태그를 만들지 않음
meta 요소는 Report-Only와 frame-ancestors 같은 지시어를 똑같이 전달할 수 없습니다. 이 도구는 HTTP 헤더 텍스트만 내보내며 Nginx나 Apache 설정 문법은 생성하지 않습니다.

CSP 생성기 자주 묻는 질문

'self'와 '*'의 차이는?

self는 현재 문서와 같은 오리진만 가리킵니다. 단독 *는 많은 네트워크 호스트를 허용합니다. 둘의 범위가 크게 다르므로 필요한 호스트를 명시하는 편이 낫습니다.

'unsafe-inline'과 'unsafe-eval'을 피해야 하는 이유는?

두 설정 모두 공격에 악용될 수 있는 실행 경로를 넓힙니다. 인라인 실행은 요청별 nonce나 해시로, 문자열 실행은 코드 수정으로 줄일 수 있지만 실제 앱 테스트가 필요합니다.

CSP를 Report-Only 모드로 테스트하는 방법은?

서버가 Content-Security-Policy-Report-Only 헤더와 보고 대상 설정을 함께 제공해야 합니다. 이 페이지의 전환은 예시 헤더만 바꾸며 실제 방문자 요청을 보지 않습니다.

Google Analytics와 CSP 충돌 해결법은?

필요한 Google Analytics 호스트를 해당 지시어에 정확히 추가하고 실제 브라우저의 위반 보고를 확인하세요. 도구는 외부 사이트를 호출하지 않아 사용 중인 주소를 자동으로 찾아내지 못합니다.

default-src와 다른 지시어의 관계는?

default-src는 빠진 가져오기 지시어의 대체값입니다. script-src처럼 특정 지시어가 있으면 그 값이 우선하며 base-uri나 frame-ancestors에는 기본값이 적용되지 않습니다.

다른 경우도 궁금한가요?

CSP 생성기로 초안 점검

리소스 URL 한 건과 적용 지시어를 비교한 뒤 각 알림을 읽고 최신 헤더를 복사하세요.