매니페스트 - 콘텐츠 보안 정책

확장 프로그램에서 사용할 수 있는 스크립트, 스타일, 기타 리소스에 대한 제한사항을 지정하는 웹 플랫폼 콘텐츠 보안 정책이 포함된 매니페스트 키입니다(선택사항). 이 매니페스트 키 내에서 확장 프로그램 페이지와 샌드박스 확장 프로그램 페이지 모두에 대해 별도의 선택적 정책을 정의할 수 있습니다.

'확장 프로그램 페이지' 정책은 확장 프로그램의 페이지 및 작업자 컨텍스트에 적용됩니다. 여기에는 확장 프로그램 팝업, 백그라운드 작업자 및 확장 프로그램에서 연 HTML 페이지 또는 iframe이 있는 탭이 포함됩니다. 샌드박스 정책은 매니페스트에서 샌드박스 페이지로 지정된 모든 페이지에 적용됩니다.

기본 정책

사용자가 매니페스트에서 콘텐츠 보안 정책을 정의하지 않으면 확장 프로그램 페이지와 샌드박스 확장 프로그램 페이지 모두에 기본 속성이 사용됩니다.

이러한 기본값은 매니페스트에서 다음 정책을 지정하는 것과 같습니다.

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self';",
    "sandbox": "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
  }
  // ...
}

이 경우 확장 프로그램은 자체 패키징된 리소스에서만 로컬 스크립트와 객체를 로드합니다. WebAssembly가 사용 중지되고 확장 프로그램이 인라인 자바스크립트를 실행하거나 문자열을 실행 코드로 평가할 수 없게 됩니다. 샌드박스 페이지가 추가되면 확장 프로그램 외부에서 스크립트를 평가할 수 있는 권한이 완화됩니다.

최소 및 맞춤형 컨텐츠 보안 정책

개발자는 확장 프로그램에 대한 규칙을 추가 또는 삭제하거나 프로젝트의 요구사항에 맞게 최소 필수 콘텐츠 보안 정책을 사용할 수 있습니다.

확장 프로그램 페이지 정책

Chrome에서는 확장 프로그램 페이지에 최소 콘텐츠 보안 정책을 시행합니다. 매니페스트에 다음 정책을 지정하는 것과 같습니다.

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
  }
  // ...
}

extension_pages 정책은 이 최솟값을 초과하여 완화할 수 없습니다. 즉, 다른 스크립트 소스는 지시문에 추가할 수 없습니다(예: 'unsafe-eval'script-src에 추가). 허용되지 않는 소스를 확장 프로그램의 정책에 추가하면 설치 시 Chrome에서 다음과 같은 오류가 발생합니다.

'content_security_policy.extension_pages': Insecure CSP value "'unsafe-eval'" in directive 'script-src'.

샌드박스 페이지 정책

샌드박스 페이지의 기본 정책은 확장 프로그램 페이지보다 훨씬 더 관대합니다. 샌드박스 페이지는 확장 프로그램 API에 액세스할 수 없거나 샌드박스 처리되지 않은 페이지에 직접 액세스할 수 없기 때문입니다. 샌드박스 콘텐츠 보안 정책은 필요에 따라 맞춤설정할 수 있습니다.