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