अगर कोई एक्सटेंशन लोगों की निजता से समझौता करता है या ज़रूरत से ज़्यादा अनुमतियां मांगता है, तो लोग उसे इंस्टॉल नहीं करेंगे. अनुमति के लिए ऐसे अनुरोध किए जाने चाहिए जो उपयोगकर्ताओं के काम के हों. साथ ही, ये अनुरोध सिर्फ़ एक्सटेंशन को लागू करने के लिए ज़रूरी जानकारी तक सीमित होने चाहिए. उपयोगकर्ता का कोई भी डेटा इकट्ठा या ट्रांसमिट करने वाले एक्सटेंशन को, उपयोगकर्ता की निजता को सुरक्षित रखना सेक्शन में दी गई नीतियों का पालन करना होगा.
एक्सटेंशन का इस्तेमाल करने वाले लोगों की सुरक्षा और निजता का ध्यान रखें. इसके लिए, इन सावधानियों को शामिल करें, ताकि उनकी पहचान सुरक्षित रखी जा सके.
ज़रूरी अनुमतियां कम करना
एक्सटेंशन जिन एपीआई को ऐक्सेस कर सकता है उन्हें मेनिफ़ेस्ट के permissions फ़ील्ड में बताया जाता है. जितनी ज़्यादा अनुमतियां दी जाती हैं, हमलावर के पास जानकारी को रोकने के उतने ही ज़्यादा तरीके होते हैं. सिर्फ़ उन एपीआई को सूची में शामिल किया जाना चाहिए जिन पर एक्सटेंशन निर्भर करता है. साथ ही, कम दखल देने वाले विकल्पों पर ध्यान दिया जाना चाहिए. एक्सटेंशन जितनी कम अनुमतियां मांगेगा, उपयोगकर्ता को अनुमति से जुड़ी उतनी ही कम चेतावनियां दिखेंगी. इस बात की संभावना ज़्यादा होती है कि उपयोगकर्ता, कम चेतावनियों वाले एक्सटेंशन को इंस्टॉल करें.
एक्सटेंशन को उपयोगकर्ता के डेटा का ऐक्सेस "आने वाले समय के लिए तैयार" के तौर पर नहीं रखना चाहिए. इसके लिए, ऐसी अनुमतियों का अनुरोध नहीं करना चाहिए जिनकी उन्हें फ़िलहाल ज़रूरत नहीं है, लेकिन वे आने वाले समय में लागू हो सकती हैं. एक्सटेंशन के अपडेट के साथ नई अनुमतियां शामिल करें और उन्हें ज़रूरी नहीं के तौर पर सेट करें.
activeTab
स्क्रिप्ट इंजेक्ट करने के लिए होस्ट की अनुमतियों का इस्तेमाल करने वाले एक्सटेंशन, अक्सर activeTab का इस्तेमाल कर सकते हैं. activeTab अनुमति देने पर, एक्सटेंशन को कुछ समय के लिए सिर्फ़ उस टैब का ऐक्सेस मिलेगा जो फ़िलहाल चालू है. ऐसा सिर्फ़ तब होगा, जब उपयोगकर्ता एक्सटेंशन को चालू करेगा. जब उपयोगकर्ता मौजूदा टैब से हट जाता है या उसे बंद कर देता है, तब ऐक्सेस खत्म हो जाता है. यह <all_urls> के कई इस्तेमाल के लिए एक विकल्प के तौर पर काम करता है.
{
"name": "Very Secure Extension",
"version": "1.0",
"description": "Example of a Secure Extension",
"permissions": ["activeTab"],
"manifest_version": 3
}
activeTab अनुमति के लिए, इंस्टॉलेशन के दौरान कोई चेतावनी वाला मैसेज नहीं दिखता है.
वैकल्पिक अनुमतियों के लिए ऑप्ट इन करना
ज़रूरी न होने वाली अनुमतियां शामिल करके, उपयोगकर्ताओं को यह चुनने का विकल्प दें कि उन्हें एक्सटेंशन की किन सुविधाओं और अनुमतियों की ज़रूरत है. अगर कोई सुविधा एक्सटेंशन के मुख्य फ़ंक्शन के लिए ज़रूरी नहीं है, तो उसे वैकल्पिक बनाएं. साथ ही, एपीआई या डोमेन को optional_permissions फ़ील्ड में ले जाएं.
{
"name": "Very Secure Extension",
...
"optional_permissions": [ "tabs", ],
"optional_host_permissions": ["https://www.google.com/" ],
...
}
ज़रूरी नहीं वाली अनुमतियों को शामिल करने से, एक्सटेंशन यह बता पाता है कि उसे किसी खास अनुमति की ज़रूरत क्यों है. ऐसा तब होता है, जब उपयोगकर्ता उस सुविधा को चालू करता है. एक्सटेंशन, उपयोगकर्ता को सुविधाएं चालू करने का विकल्प दे सकता है.

ठीक है! पर क्लिक करने से, सर्विस वर्कर में यह इवेंट ट्रिगर होगा.
chrome.action.onClicked.addListener((event) => {
// Permissions must be requested from inside a user gesture, like a button's
// click handler.
chrome.permissions.request(
{
permissions: ["tabs", "scripting"],
origins: ['https://www.google.com/']
},
function (granted) {
// The callback argument will be true if the user granted the permissions.
if (granted) {
// doSomething();
} else {
// doSomethingElse();
}
}
);
});
इसके बाद, उपयोगकर्ता को यह अनुरोध दिखेगा.

एक्सटेंशन के अपडेट में, वैकल्पिक अनुमतियां भी लागू की जा सकती हैं. ऐसा करने से, उपयोगकर्ताओं को एक्सटेंशन बंद किए बिना नई सुविधा मिल जाएगी. ऐसा तब हो सकता है, जब नई ज़रूरी अनुमतियों के साथ अपडेट किया जा रहा हो.
उपयोगकर्ता की जानकारी को सीमित और सुरक्षित रखना
एक्सटेंशन के लिए, कम से कम ज़रूरी डेटा का ही अनुरोध करें. एक्सटेंशन, उपयोगकर्ता से जितनी कम जानकारी मांगेगा, उसके साथ समझौता होने पर उतनी ही कम जानकारी का गलत इस्तेमाल किया जा सकेगा.
उपयोगकर्ता के अनुरोध किए गए सभी डेटा को सावधानी से मैनेज किया जाना चाहिए. यह कुकी, रजिस्टर किए गए डोमेन के साथ सुरक्षित सर्वर में डेटा सेव करती है और उसे वापस लाती है. कनेक्ट करने के लिए हमेशा एचटीटीपीएस का इस्तेमाल करें. साथ ही, संवेदनशील उपयोगकर्ता डेटा को एक्सटेंशन के क्लाइंट साइड में न रखें, क्योंकि एक्सटेंशन स्टोरेज एन्क्रिप्ट (सुरक्षित) नहीं होता है.
डेटा सेव करना और गुप्त मोड
एक्सटेंशन, storage API का इस्तेमाल करके डेटा सेव कर सकते हैं. इसके अलावा, वे सर्वर के ऐसे अनुरोध करके भी डेटा सेव कर सकते हैं जिनसे डेटा सेव होता है. जब एक्सटेंशन को कोई डेटा सेव करना हो, तो पहले यह देखें कि वह डेटा किसी गुप्त विंडो से तो नहीं लिया गया है. डिफ़ॉल्ट रूप से, एक्सटेंशन गुप्त विंडो में काम नहीं करते.
गुप्त मोड में यह वादा किया जाता है कि विंडो कोई भी निशान नहीं छोड़ेगी. गुमनाम विंडो से मिले डेटा को प्रोसेस करते समय, एक्सटेंशन को इस वादे का पालन करना चाहिए. अगर कोई एक्सटेंशन आम तौर पर ब्राउज़िंग इतिहास सेव करता है, तो गुप्त विंडो से इतिहास सेव न करें. हालांकि, एक्सटेंशन किसी भी विंडो की सेटिंग की प्राथमिकताओं को सेव कर सकते हैं. भले ही, वह विंडो गुप्त मोड में हो या न हो.
यह पता लगाने के लिए कि कोई विंडो गुप्त मोड में है या नहीं, tabs.Tab या windows.Window ऑब्जेक्ट की incognito प्रॉपर्टी देखें.
function saveTabData(tab) {
if (tab.incognito) {
return;
} else {
chrome.storage.local.set({data: tab.url});
}
}