경고: 버전 57부터 Chrome은 샌드박스 페이지 내에 외부 웹 콘텐츠 (삽입된 프레임 및 스크립트 포함)를 더 이상 허용하지 않습니다. 대신 webview를 사용하세요.
샌드박스 처리된 고유한 출처에 게재될 앱 또는 확장 프로그램 페이지 모음과 함께 사용할 콘텐츠 보안 정책(선택사항)을 정의합니다. 샌드박스에 있다는 사실에는 두 가지 의미가 있습니다.
- 샌드박스 처리된 페이지는 확장 프로그램 또는 앱 API에 액세스할 수 없으며 샌드박스가 설정되지 않은 페이지에 직접 액세스할 수 없습니다 (
postMessage()
를 통해 통신할 수 있음). 샌드박스 페이지에는 앱 또는 확장 프로그램의 나머지 부분에서 사용하는 콘텐츠 보안 정책 (CSP)이 적용되지 않습니다 (별도의 자체 CSP 값이 있음). 예를 들어 인라인 스크립트와
eval
를 사용할 수 있습니다.예를 들어 두 개의 확장 프로그램 페이지가 맞춤 CSP를 사용하여 샌드박스에 제공되도록 지정하는 방법은 다음과 같습니다.
{ ... "sandbox": { "pages": [ "page1.html", "directory/page2.html" ] // content_security_policy is optional. "content_security_policy": "sandbox allow-scripts; script-src 'self'" ], ... }
지정하지 않으면 기본
content_security_policy
값은sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';
입니다. CSP 값을 지정하여 샌드박스를 더욱 제한할 수 있지만,sandbox
지시어가 있어야 하며allow-same-origin
토큰이 없을 수도 있습니다 (가능한 샌드박스 토큰은 HTML5 사양 참고). 또한 지정한 CSP가 샌드박스 처리된 페이지 내에서 외부 웹 콘텐츠 로드를 허용하지 않을 수 있습니다.
창 또는 프레임에서 로드될 것으로 예상되는 페이지만 나열하면 됩니다. 샌드박스 처리된 페이지에 사용되는 리소스 (예: 스타일시트 또는 자바스크립트 소스 파일)는 sandboxed_page
목록에 표시할 필요가 없습니다. 해당 리소스가 삽입된 페이지의 샌드박스를 사용합니다.
'Chrome 확장 프로그램에서 eval 사용. Safely.'의 안내에 따라 확장 프로그램의 기본 콘텐츠 보안 정책에 따라 실행하는 데 문제가 발생하는 라이브러리를 사용할 수 있는 샌드박스 워크플로를 구현하는 방법을 자세히 설명합니다.
샌드박스 페이지는 manifest_version
2 이상을 사용할 때만 지정할 수 있습니다.