उपयोगकर्ताओं को नुकसान पहुंचाने वाले एचटीएमएल या JavaScript से बचाने के लिए Apps Script, Google Docs, Sheets, और Forms के लिए एचटीएमएल-सेवा वेब ऐप्लिकेशन या कस्टम यूज़र इंटरफ़ेस को सैंडबॉक्स करने के लिए iframe का इस्तेमाल करती है. (एचटीएमएल सेवा, किसी ईमेल का मुख्य हिस्सा जनरेट करने जैसी अन्य स्थितियों में सैंडबॉक्स का इस्तेमाल नहीं करती.) सैंडबॉक्स, क्लाइंट-साइड कोड पर पाबंदियां लगाता है.
सैंडबॉक्स मोड
IFRAME
को छोड़कर, सभी सैंडबॉक्स मोड अब बंद हो गए हैं. पुराने सैंडबॉक्स मोड का इस्तेमाल करने वाले ऐप्लिकेशन, अब नए IFRAME
मोड का इस्तेमाल अपने-आप करते हैं. अगर आपके पास ऐसी स्क्रिप्ट हैं जिन्हें NATIVE
और EMULATED
जैसे पुराने मोड का इस्तेमाल करके डेवलप किया गया था, तो आपको माइग्रेशन के निर्देशों का पालन करना चाहिए. इससे यह पक्का किया जा सकेगा कि वे IFRAME
मोड में सही तरीके से काम करें.
setSandboxMode
तरीका कॉल करने पर, अब इसका कोई असर नहीं पड़ता.
iframe मोड में पाबंदियां
IFRAME
सैंडबॉक्स मोड, HTML5 में 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>
ऐक्टिव कॉन्टेंट के लिए एचटीटीपीएस ज़रूरी है
स्क्रिप्ट, एक्सटर्नल स्टाइलशीट, और XmlHttpRequest जैसे "ऐक्टिव" कॉन्टेंट को एचटीटीपी के बजाय एचटीटीपीएस पर लोड किया जाना चाहिए.