उपयोगकर्ता की निजता की सुरक्षा करें

अगर उपयोगकर्ता किसी एक्सटेंशन को इंस्टॉल नहीं करते हैं, अगर उनकी निजता से छेड़छाड़ की जाती है या ज़रूरत के हिसाब से और अनुमतियां मांगी जाती हैं. अनुमति के अनुरोध, उपयोगकर्ताओं के काम में आने चाहिए. साथ ही, ये एक्सटेंशन को लागू करने के लिए ज़रूरी जानकारी तक सीमित होने चाहिए. उपयोगकर्ता का डेटा इकट्ठा या ट्रांसमिट करने वाले एक्सटेंशन के लिए, उपयोगकर्ता की निजता की सुरक्षा से जुड़ी नीतियों का पालन करना ज़रूरी है.

एक्सटेंशन इस्तेमाल करने वाले लोगों की पहचान सुरक्षित रखने के लिए, इन सावधानियों का इस्तेमाल करके उन्हें सुरक्षित रखें और उनका सम्मान करें.

ज़रूरी अनुमतियां कम करें

एक्सटेंशन जिन एपीआई को ऐक्सेस कर सकता है उनकी जानकारी मेनिफ़ेस्ट के 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});
  }
}