ব্যবহারকারীদের ক্ষতিকর HTML বা জাভাস্ক্রিপ্ট থেকে রক্ষা করার জন্য, HTML সার্ভিসটি Google Docs, Google Sheets, এবং Forms-এর ওয়েব অ্যাপ বা কাস্টম ইউজার ইন্টারফেসকে স্যান্ডবক্স করতে iframe ব্যবহার করে। অন্যান্য ক্ষেত্রে, যেমন একটি ইমেলের মূল অংশ তৈরি করার সময়, HTML সার্ভিসটি কোনো স্যান্ডবক্স ব্যবহার করে না। এই স্যান্ডবক্স ক্লায়েন্ট-সাইড কোডের উপর সীমাবদ্ধতা আরোপ করে।
স্যান্ডবক্স মোড
IFRAME বাদে, বাকি সব স্যান্ডবক্স মোড বন্ধ করে দেওয়া হয়েছে। যে অ্যাপগুলো আগে NATIVE বা EMULATED মোড ব্যবহার করত, সেগুলো এখন স্বয়ংক্রিয়ভাবে IFRAME মোড ব্যবহার করবে। যদি আপনার স্ক্রিপ্টটি কোনো পুরোনো মোডে তৈরি করা হয়ে থাকে, তবে সেটি যেন সঠিকভাবে কাজ করে তা নিশ্চিত করতে মাইগ্রেশন নির্দেশাবলী অনুসরণ করুন।
setSandboxMode মেথডটি এখন কল করা হলে কোনো প্রভাব ফেলে না।
IFRAME মোডে সীমাবদ্ধতা
IFRAME স্যান্ডবক্স মোডটি HTML5-এর আইফ্রেম স্যান্ডবক্সিং বৈশিষ্ট্যের উপর ভিত্তি করে তৈরি, যেখানে নিম্নলিখিত কীওয়ার্ডগুলো ব্যবহৃত হয়:
-
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 এ সেট করতে হবে।
কোড.জেএস
function doGet() {
var template = HtmlService.createTemplateFromFile('top');
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
শীর্ষ.html
<!DOCTYPE html>
<html>
<body>
<div>
<a href="http://google.com" target="_top">Click Me!</a>
</div>
</body>
</html>
আপনি মূল ওয়েব পেজের head সেকশনের মধ্যে <base> ট্যাগ ব্যবহার করেও এই অ্যাট্রিবিউটটি ওভাররাইড করতে পারেন:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
সক্রিয় কন্টেন্টের জন্য HTTPS প্রয়োজন।
স্ক্রিপ্ট, এক্সটার্নাল স্টাইলশিট এবং XmlHttpRequests-এর মতো "সক্রিয়" কন্টেন্ট অবশ্যই HTTPS-এর মাধ্যমে লোড করতে হবে, HTTP-এর মাধ্যমে নয়।