매니페스트 - 샌드박스

샌드박스 처리된 고유 출처에서 제공할 확장 프로그램 페이지 모음을 정의합니다. 확장 프로그램의 샌드박스 페이지에서 사용하는 콘텐츠 보안 정책은 "content_security_policy" 키에 지정됩니다.

샌드박스에 있으면 다음 두 가지 의미가 있습니다.

  1. 샌드박스 처리된 페이지는 확장 프로그램 API에 액세스할 수 없거나 샌드박스 처리되지 않은 페이지에 직접 액세스할 수 없습니다 (postMessage()를 사용하여 통신할 수 있음).
  2. 샌드박스 처리된 페이지에는 확장 프로그램의 나머지 부분에서 사용하는 콘텐츠 보안 정책 (CSP)이 적용되지 않습니다 (별도의 자체 CSP 값이 있음). 예를 들어 인라인 스크립트와 eval()를 사용할 수 있습니다.

예를 들어 맞춤 CSP를 사용하여 샌드박스에서 두 개의 확장 프로그램 페이지를 제공하도록 지정하는 방법은 다음과 같습니다.

{
  ...
  "content_security_policy": {
    "sandbox": "sandbox allow-scripts; script-src 'self' https://example.com"
  },
  "sandbox": {
    "pages": [
      "page1.html",
      "directory/page2.html"
    ]
  },
  ...
}

지정되지 않은 경우 기본값 "content_security_policy"sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';입니다.

CSP 값을 지정하여 샌드박스를 더욱 제한할 수도 있지만 "sandbox" 지시어를 포함해야 하며(MUST) allow-same-origin 토큰을 보유하면 안 됩니다(사용 가능한 샌드박스 토큰은 HTML5 사양 참고).

창 또는 프레임에 로드될 것으로 예상되는 페이지만 나열하면 됩니다. 샌드박스 처리된 페이지 (예: 스타일시트 또는 자바스크립트 소스 파일)에서 사용하는 리소스는 pages 목록에 표시할 필요가 없습니다. 삽입된 프레임의 샌드박스를 사용하기 때문입니다.

'Chrome 확장 프로그램에서 eval() 사용'은 확장 프로그램의 기본 콘텐츠 보안 정책에 따라 실행하는 데 문제가 있는 라이브러리를 사용할 수 있는 샌드박스 워크플로를 구현하는 방법을 자세히 설명합니다.