मेनिफ़ेस्ट - कॉन्टेंट की सुरक्षा के बारे में नीति

एक वैकल्पिक मेनिफ़ेस्ट कुंजी जिसमें वेब प्लैटफ़ॉर्म की कॉन्टेंट की सुरक्षा के लिए नीति मौजूद होती है. यह नीति उन स्क्रिप्ट, स्टाइल, और दूसरे संसाधनों पर लगी पाबंदियों के बारे में बताती है जिनका इस्तेमाल एक्सटेंशन कर सकता है. इस मेनिफ़ेस्ट कुंजी में, एक्सटेंशन पेजों और सैंडबॉक्स किए गए एक्सटेंशन पेज, दोनों के लिए अलग-अलग वैकल्पिक नीतियां तय की जा सकती हैं.

"एक्सटेंशन पेज" नीति, एक्सटेंशन में मौजूद पेज और वर्कर कॉन्टेक्स्ट पर लागू होती है. इसमें एक्सटेंशन पॉप-अप, बैकग्राउंड वर्कर, और ऐसे एचटीएमएल पेज या iframe वाले टैब शामिल होंगे जिन्हें एक्सटेंशन ने खोला था. सैंडबॉक्स नीति, मेनिफ़ेस्ट में सैंडबॉक्स पेज के तौर पर बताए गए सभी पेजों पर लागू होती है.

डिफ़ॉल्ट नीति

अगर उपयोगकर्ता ने मेनिफ़ेस्ट में कॉन्टेंट की सुरक्षा के बारे में नीति तय नहीं की है, तो एक्सटेंशन पेजों और सैंडबॉक्स किए गए एक्सटेंशन पेजों, दोनों के लिए डिफ़ॉल्ट प्रॉपर्टी का इस्तेमाल किया जाएगा.

इन डिफ़ॉल्ट सेटिंग की मदद से, मेनिफ़ेस्ट में इन नीतियों के बारे में बताया जा सकता है:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self';",
    "sandbox": "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
  }
  // ...
}

इस मामले में, एक्सटेंशन अपने पैकेज किए गए संसाधनों से सिर्फ़ लोकल स्क्रिप्ट और ऑब्जेक्ट को लोड करेगा. WebAssembly को बंद कर दिया जाएगा. साथ ही, एक्सटेंशन, इनलाइन JavaScript नहीं चलाएगा या स्ट्रिंग का आकलन एक्ज़ीक्यूटेबल कोड के तौर पर नहीं कर पाएगा. अगर कोई सैंडबॉक्स पेज जोड़ा जाता है, तो एक्सटेंशन के बाहर की स्क्रिप्ट का आकलन करने के लिए, उसमें ज़्यादा आसान अनुमतियां होंगी.

कॉन्टेंट की सुरक्षा के लिए तय की गई कम से कम और पसंद के मुताबिक बनाई गई नीतियां

डेवलपर अपने प्रोजेक्ट की ज़रूरतों के हिसाब से, एक्सटेंशन के लिए नियम जोड़ या हटा सकते हैं. इसके अलावा, वे कॉन्टेंट की सुरक्षा से जुड़ी कम से कम ज़रूरी नीति का भी इस्तेमाल कर सकते हैं.

एक्सटेंशन पेज नीति

Chrome, एक्सटेंशन पेजों के लिए कॉन्टेंट की सुरक्षा के लिए तय की गई कम से कम नीति लागू करता है. यह अपने मेनिफ़ेस्ट में नीचे दी गई नीति तय करने के बराबर है:

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
  }
  // ...
}

extension_pages नीति को इस कम से कम वैल्यू से ज़्यादा नहीं हटाया जा सकता. दूसरे शब्दों में, डायरेक्टिव में दूसरे स्क्रिप्ट सोर्स नहीं जोड़े जा सकते, जैसे कि 'unsafe-eval' को script-src में जोड़ना. अगर अपने एक्सटेंशन की नीति में कोई ऐसा सोर्स जोड़ा जाता है जिसकी अनुमति नहीं है, तो इंस्टॉल करते समय Chrome, इस तरह की गड़बड़ी दिखाएगा:

'content_security_policy.extension_pages': Insecure CSP value "'unsafe-eval'" in directive 'script-src'.

सैंडबॉक्स पेज नीति

सैंडबॉक्स किए गए पेजों के लिए डिफ़ॉल्ट नीति, एक्सटेंशन पेजों के मुकाबले ज़्यादा बेहतर होती है. इसकी वजह यह है कि सैंडबॉक्स पेज के पास एक्सटेंशन एपीआई या बिना सैंडबॉक्स वाले पेजों का सीधा ऐक्सेस नहीं होता. सैंडबॉक्स कॉन्टेंट की सुरक्षा से जुड़ी नीति को ज़रूरत के मुताबिक बनाया जा सकता है.