악성 HTML 또는 JavaScript가 사용자에게 노출되는 것을 방지하기 위해 Apps Script는 iframe을 사용하여 HTML 서비스 웹 앱 또는 맞춤 사용자를 샌드박스 처리 Google Docs, Sheets, Forms의 인터페이스입니다. (HTML 서비스는 샌드박스를 실행할 수 없습니다.) 샌드박스 클라이언트 측 코드에 제한을 둡니다.
샌드박스 모드
이제 IFRAME
을 제외한 모든 샌드박스 모드가 지원 종료됩니다. 이전 샌드박스를 사용하는 앱
모드는 이제 자동으로 최신 IFRAME
모드를 사용합니다. 이러한 작업을 수행하는
이전 모드 (NATIVE
및 EMULATED
)를 사용하여 개발된 경우
이전 안내를 따라
IFRAME
모드에서 제대로 작동합니다.
setSandboxMode
메서드는 이제 호출해도 아무런 효과가 없습니다.
IFRAME 모드의 제한사항
IFRAME
샌드박스 모드는
iframe 샌드박스 기능
을 사용할 수 있습니다.
allow-same-origin
allow-forms
allow-scripts
allow-popups
allow-downloads
allow-modals
allow-popups-to-escape-sandbox
allow-top-navigation-by-user-activation
- 이 속성은 독립 실행형 스크립트 프로젝트가 포함됩니다.
allow-top-navigation
키워드: 콘텐츠가
최상위 탐색 컨텍스트로, 제한되며
있습니다. 스크립트를 리디렉션해야 하는 경우
조치를 취할 수 있습니다.
링크 대상 속성 설정
IFRAME
모드에서는 링크 대상 속성을 다음 중 하나로 설정해야 합니다.
_top
또는 _blank
:
Code.js
function doGet() {
var template = HtmlService.createTemplateFromFile('top');
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
top.html
<!DOCTYPE html>
<html>
<body>
<div>
<a href="http://google.com" target="_top">Click Me!</a>
</div>
</body>
</html>
헤드 내의 <base>
태그를 사용하여 이 속성을 재정의할 수도 있습니다.
섹션에 다음과 같이 표시됩니다.
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
활성 콘텐츠에 HTTPS 필요
'활성' 콘텐츠 스크립트, 외부 스타일시트, XmlHttpRequests와 같은 API는 HTTP가 아닌 HTTPS