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

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

'확장 프로그램 페이지' 정책은 확장 프로그램의 페이지 및 작업자 컨텍스트에 적용됩니다. 여기에는 확장 프로그램 팝업, 백그라운드 작업자, 확장 프로그램에서 연 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 정책은 이 최솟값 이상으로 완화할 수 없습니다. 즉, 지시어에 다른 스크립트 소스를 추가할 수 없습니다(예: script-src'unsafe-eval' 추가). 허용되지 않는 소스를 확장 프로그램 정책에 추가하면 Chrome에서 설치 시 다음과 같은 오류가 발생합니다.

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

샌드박스 페이지 정책

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