किसी एक्सटेंशन की वेबसाइटों और ज़्यादातर Chrome API को ऐक्सेस करने की क्षमता, उसके किए गए एलान से तय होती है अनुमतियां. अनुमतियों को सिर्फ़ उन चीज़ों के लिए सीमित किया जाना चाहिए जो उनके काम करने के लिए ज़रूरी हों. अनुमतियों को सीमित करने से, एक्सटेंशन की क्षमताएं तय होती हैं. साथ ही, इससे डेटा पर होने वाला संभावित असर कम हो जाता है अगर किसी हमलावर ने एक्सटेंशन के साथ छेड़छाड़ की है. एक्सटेंशन और उनके उपयोगकर्ताओं को सुरक्षित रखने के लिए, साफ़ तौर पर, कम से कम और वैकल्पिक अनुमतियां होनी चाहिए.
अनुमतियां व्यवस्थित करें
अनुमतियां ऐसी स्ट्रिंग होती हैं जो Chrome API या मैच पैटर्न के बारे में बताती हैं, जो एक या ज़्यादा होस्ट. इन्हें मेनिफ़ेस्ट में शामिल किया जाता है और इनके बारे में ज़रूरी अनुमतियों के तौर पर बताया जाता है या वैकल्पिक अनुमतियां.
{
"name": "Permissions Extension",
...
// required permissions
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
// optional permissions
"optional_permissions": [
"topSites",
"http://www.developer.chrome.com/*"
],
...
"manifest_version": 2
}
ज़रूरी अनुमतियों को सिर्फ़ उन अनुमतियों तक सीमित करें जो एक्सटेंशन के मुख्य फ़ंक्शन के लिए ज़रूरी हैं. अगर आप एक्सटेंशन को अभी ज़रूरत से ज़्यादा अनुमतियों का अनुरोध नहीं करना चाहिए; आने वाले समय में, अपडेट करने के लिए ज़रूरी अनुमतियों का अनुरोध करना.
वैकल्पिक सुविधाओं के लिए ज़रूरी अनुमतियां, वैकल्पिक अनुमतियों के तौर पर रजिस्टर होनी चाहिए. यह इससे उपयोगकर्ता यह तय कर सकते हैं कि वे एक्सटेंशन देने के लिए, कितने ऐक्सेस और कौनसी सुविधाएं देना चाहते हैं चाहते हैं.
ज़रूरी अनुमतियों की पहचान करें
किसी सामान्य एक्सटेंशन को कई अनुमतियों का अनुरोध करना पड़ सकता है, और कई अनुमतियां दिखती हैं इंस्टॉल करने पर चेतावनियां मिलेंगी. उपयोगकर्ताओं की सीमित चेतावनियों वाले एक्सटेंशन पर या जब अनुमतियों के बारे में बताया जाता है.
किसी एक्सटेंशन के मुख्य फ़ंक्शन की पहचान करें और पता लगाएं कि उसके लिए कौनसी अनुमतियां ज़रूरी हैं. इन बातों पर ध्यान दें अगर सुविधाओं को चेतावनियों के साथ अनुमतियों की ज़रूरत होती है, तो उन्हें वैकल्पिक बनाना.
इवेंट के साथ वैकल्पिक अनुमतियां ट्रिगर करें
वैकल्पिक अनुमतियों के सैंपल एक्सटेंशन का मुख्य फ़ंक्शन, नए टैब पेज को बदल रहा है. एक सुविधा यह दिखा रही है कि उपयोगकर्ता ने दिन का लक्ष्य तय किया है. इस सुविधा का इस्तेमाल करने के लिए, सिर्फ़ स्टोरेज की ज़रूरत होती है अनुमति देता है, जिसमें चेतावनी शामिल नहीं होती है.
एक्सटेंशन में एक अतिरिक्त सुविधा है; उपयोगकर्ता की सबसे अच्छी साइटें दिखाता है. इस सुविधा के लिए ज़रूरी है topSites की अनुमति, जिसमें एक चेतावनी शामिल है.
ऐसी सुविधाएं डेवलप करना जो ज़रूरी होने पर चेतावनियों के साथ-साथ अनुमतियों पर निर्भर हों. साथ ही, ऐसे टूल के बारे में बताना सुविधाओं का इस्तेमाल करके, उपयोगकर्ताओं को एक्सटेंशन के बारे में बिना किसी जोखिम के जानकारी मिलती है. साथ ही, इस की मदद से उपयोगकर्ता, एक्सटेंशन इस्तेमाल करके अपने अनुभव को और ज़्यादा पसंद के मुताबिक बना सकते हैं. साथ ही, चेतावनियों के बारे में बताता है.
ActiveTab अनुमति के बजाय कोई और कार्रवाई करें
activeTab
की अनुमति से, कुछ समय के लिए उस साइट का ऐक्सेस मिलता है जिस पर उपयोगकर्ता मौजूद है और
मौजूदा टैब पर "tabs"
अनुमति का इस्तेमाल करने के लिए एक्सटेंशन. यह
ज़्यादातर मामलों में "<all_urls>"
और इंस्टॉलेशन के लिए कोई चेतावनी नहीं दिखाता है.
ActiveTab के बिना:
ActiveTab के साथ:
activeTab
की अनुमति से, फ़िलहाल चालू टैब को कुछ समय के लिए ऐक्सेस मिल जाता है. ऐसा तब होता है, जब
उपयोगकर्ता एक्सटेंशन को शुरू करता है. अगर एक्सटेंशन के साथ छेड़छाड़ की गई है, तो हमलावर को इंतज़ार करना होगा
उपयोगकर्ता को एक्सेस प्राप्त करने से पहले एक्सटेंशन शुरू करने के लिए, और यह एक्सेस केवल तब तक बनी रहेगी, जब तक
उस टैब को नेविगेट या बंद किया जाता है.
जब किसी टैब के लिए activeTab
अनुमति चालू होती है, तब एक्सटेंशन ये काम कर सकता है:
- उस टैब पर
tabs.executeScript
याtabs.insertCSS
पर कॉल करें. tabs.Tab
ऑब्जेक्ट दिखाने वाले एपीआई की मदद से, उस टैब के लिए यूआरएल, टाइटल, और फ़ेविकॉन पाएं.- webRequest का इस्तेमाल करके, टैब में मौजूद नेटवर्क अनुरोधों को टैब के मुख्य फ़्रेम ऑरिजिन पर जाने से रोकें एपीआई. एक्सटेंशन को टैब के मुख्य फ़्रेम ऑरिजिन के लिए, कुछ समय के लिए होस्ट की अनुमतियां मिलती हैं.
उपयोगकर्ता के इन जेस्चर से, activeTab
चालू होता है:
- ब्राउज़र से जुड़ी कार्रवाई की जा रही है
- पेज पर कार्रवाई की जा रही है
- संदर्भ मेन्यू आइटम एक्ज़ीक्यूट करना
- commands API से कीबोर्ड शॉर्टकट एक्ज़ीक्यूट करना
- खोज वाली पट्टी API से किसी सुझाव को स्वीकार करना
ऐक्सेस दिया जा रहा है
अगर किसी एक्सटेंशन को file://
यूआरएल को ऐक्सेस करना है या गुप्त मोड में ऑपरेट करना है, तो उपयोगकर्ताओं को ये काम करने होंगे
chrome://extensions पर जाकर, एक्सटेंशन के ज़्यादा जानकारी वाले पेज में उन सुविधाओं का ऐक्सेस चालू करें.
कोई एक्सटेंशन, कॉल करके यह पता लगा सकता है कि वह गुप्त मोड में चालू है या नहीं
extension.isAllowedIncognitoAccess()
या इसके साथ file://
यूआरएल पर चल सकता है
extension.isAllowedFileSchemeAccess()
अनुमतियों को समझना
अनुमति से जुड़ी चेतावनियां, एपीआई की ओर से एक्सटेंशन इस्तेमाल करने वालों को दी गई क्षमताओं के बारे में बताने के लिए होती हैं, लेकिन
ऐसा हो सकता है कि इनमें से कुछ चेतावनियां शुरुआत में साफ़ तौर पर न दिखें. उदाहरण के लिए, "tabs"
जोड़ना
अनुमति के नतीजे दिखाने पर, दिखने वाली चेतावनी दिखती है. यह एक्सटेंशन, आपकी ब्राउज़िंग के डेटा को
गतिविधि. हालांकि, chrome.tabs
एपीआई का इस्तेमाल सिर्फ़ नए टैब खोलने के लिए किया जा सकता है, लेकिन इसका इस्तेमाल भी किया जा सकता है
का इस्तेमाल करके, हर नए टैब के tabs.Tab ऑब्जेक्ट का इस्तेमाल करके उससे जुड़ा यूआरएल देखा जा सकता है.
जब भी हो सके, चेतावनी से बचने के लिए वैकल्पिक अनुमतियां या कम असरदार एपीआई लागू करें चेतावनियां.
चेतावनियां देखना
अगर एक्सटेंशन को अनपैक की गई फ़ाइल के तौर पर लोड किया जाता है, तो अनुमति से जुड़ी कोई चेतावनी नहीं दिखेगी. देखने के लिए
एक्सटेंशन की अनुमति से जुड़ी चेतावनियां, chrome://extensions
पर जाएं, पक्का करें कि डेवलपर मोड चालू हो
और पैक एक्सटेंशन पर क्लिक करें.
एक्सटेंशन रूट डायरेक्ट्री फ़ील्ड में एक्सटेंशन के फ़ोल्डर का पाथ तय करें और फिर एक्सटेंशन पैक करें बटन. पहली बार इस्तेमाल किए जाने वाले पैकेज के लिए, निजी पासकोड फ़ील्ड को अनदेखा करें.
Chrome दो फ़ाइलें बनाएगा, .crx
फ़ाइल और .pem
फ़ाइल, जिसमें एक्सटेंशन की
निजी पासकोड दबाएं.
निजी पासकोड न खोएं! .pem
फ़ाइल को किसी सीक्रेट और सुरक्षित जगह पर रखें; यह होगा
एक्सटेंशन को अपडेट करने के लिए ज़रूरी है.
.crx
फ़ाइल को इंस्टॉल करने के लिए, उसे Chrome एक्सटेंशन के मैनेजमेंट पेज पर छोड़ें.
.crx
फ़ाइल को छोड़ने के बाद ब्राउज़र आपसे पूछेगा कि क्या एक्सटेंशन को जोड़ा जा सकता है और दिखाया जा सकता है
चेतावनियां.
चेतावनियों वाली अनुमतियां
ध्यान दें: अनुमतियों की टेबल, बेहतर तरीके से अपडेट की जाती हैं. हालांकि, इनमें कुछ अंतर हो सकते हैं
ध्यान रखें. इसके अलावा, ऐसा हो सकता है कि कुछ अनुमतियों के साथ जोड़े जाने पर चेतावनियां न दिखें
दूसरी अनुमतियां दी जाती हैं. उदाहरण के लिए, "tabs"
चेतावनी तब भी नहीं दिखेगी, जब एक्सटेंशन
"<all_urls>"
का अनुरोध करता है. एक्सटेंशन की अनुमतियों के लिए दिखाई गई हाल ही की चेतावनियों की पुष्टि करने के लिए, यह तरीका अपनाएं
चेतावनियां देखना में दिए गए निर्देशों का पालन करें.
अनुमति | ब्यौरा | चेतावनी |
---|---|---|
|
यह एक्सटेंशन, सभी होस्ट को ऐक्सेस देता है. होस्ट की अनुमतियों का एलान करने से बचने के लिए, activeTab अनुमति में बदलाव करना होगा. | आपने जिन वेबसाइटों पर विज़िट किया है उन पर मौजूद अपना सारा डेटा पढ़ना और बदलना |
"https://HostName.com/" |
यह एक्सटेंशन, "https://HostName.com/" को ऐक्सेस देता है. हालांकि, ऐसा कोई भी एलान करने से बचा जा सकता है
activeTab अनुमति का इस्तेमाल करके अनुमतियों को होस्ट करना. |
HostName.com पर मौजूद अपना डेटा पढ़ें और बदलें |
"bookmarks" |
आपके एक्सटेंशन को chrome.bookmarks API का ऐक्सेस देता है. | अपने बुकमार्क पढ़ना और बदलना |
"clipboardRead" |
अगर एक्सटेंशन document.execCommand('paste') का इस्तेमाल करता है, तो इसका इस्तेमाल करना ज़रूरी है. |
कॉपी किए और चिपकाए गए डेटा को पढ़ना |
"clipboardWrite" |
इससे पता चलता है कि एक्सटेंशन, document.execCommand('copy') का इस्तेमाल करता है या
document.execCommand('cut') . |
कॉपी किए और चिपकाए जाने वाले डेटा में बदलाव करना |
"contentSettings" |
आपके एक्सटेंशन को chrome.contentSettings API का ऐक्सेस देता है. | वेबसाइटों को कंट्रोल करने वाली सेटिंग बदलना कुकी, JavaScript, प्लगिन, और दूसरी सुविधाओं तक पहुंच जियोलोकेशन, माइक्रोफ़ोन, कैमरा वगैरह. |
"debugger" |
यह आपके एक्सटेंशन को chrome.debugger API का ऐक्सेस देता है. |
|
"declarativeNetRequest" |
यह आपके एक्सटेंशन को chrome.declarativeNetRequest API का ऐक्सेस देता है. | पेज का कॉन्टेंट ब्लॉक करना |
"desktopCapture" |
यह आपके एक्सटेंशन को chrome.desktopCapture API का ऐक्सेस देता है. | अपनी स्क्रीन का कॉन्टेंट कैप्चर करना |
"downloads" |
यह आपके एक्सटेंशन को chrome.downloads API का ऐक्सेस देता है. | डाउनलोड किए गए वीडियो मैनेज करना |
"geolocation" |
एक्सटेंशन को HTML5 जियोलोकेशन एपीआई का इस्तेमाल करने की अनुमति देता है बिना अनुमति के उपयोगकर्ता से संपर्क करें. | कारोबार की जगह की जानकारी का पता लगाना |
"history" |
यह आपके एक्सटेंशन को chrome.history API का ऐक्सेस देता है. | अपना ब्राउज़िंग इतिहास पढ़ना और बदलना |
"management" |
यह एक्सटेंशन को chrome.management एपीआई का ऐक्सेस देता है. | अपने ऐप्लिकेशन, एक्सटेंशन, और थीम मैनेज करना |
"nativeMessaging" |
एक्सटेंशन को नेटिव मैसेजिंग एपीआई का ऐक्सेस देता है. | नेटिव ऐप्लिकेशन के साथ मिलकर काम करने के लिए |
"notifications" |
यह आपके एक्सटेंशन को chrome.notifications एपीआई का ऐक्सेस देता है. | सूचनाएं दिखाएं |
"pageCapture" |
यह एक्सटेंशन को chrome.pageCapture एपीआई का ऐक्सेस देता है. | आपने जिन वेबसाइटों पर विज़िट किया है उन पर मौजूद अपना सारा डेटा पढ़ना और बदलना |
"privacy" |
यह एक्सटेंशन को chrome.privacy एपीआई का ऐक्सेस देता है. | निजता से जुड़ी सेटिंग बदलना |
"proxy" |
यह एक्सटेंशन, chrome.proxy एपीआई का ऐक्सेस देता है. | आपने जिन वेबसाइटों पर विज़िट किया है उन पर मौजूद अपना सारा डेटा पढ़ना और बदलना |
"system.storage" |
यह एक्सटेंशन को chrome.system.storage एपीआई का ऐक्सेस देता है. | स्टोरेज डिवाइसों की पहचान करना और उन्हें हटाना |
"tabCapture" |
यह एक्सटेंशन को chrome.tabCapture API का ऐक्सेस देता है. | आपने जिन वेबसाइटों पर विज़िट किया है उन पर मौजूद अपना सारा डेटा पढ़ना और बदलना |
"tabs" |
कई एपीआई में इस्तेमाल किए जाने वाले Tab ऑब्जेक्ट के खास अधिकार वाले फ़ील्ड का ऐक्सेस देता है
इसमें chrome.tabs और chrome.windows शामिल है. तय सीमा में
कई मामलों में, एक्सटेंशन को "tabs" अनुमति का इस्तेमाल करने की ज़रूरत नहीं होगी
इन एपीआई का इस्तेमाल कर रहे हैं. |
अपना ब्राउज़िंग इतिहास पढ़ना |
"topSites" |
एक्सटेंशन को chrome.topSites एपीआई का ऐक्सेस देता है. | सबसे ज़्यादा देखी गई वेबसाइटों की सूची पढ़ना |
"ttsEngine" |
एक्सटेंशन को chrome.ttsEngine API का ऐक्सेस देता है. | मशीनी बोली का इस्तेमाल करके, बोले गए सभी टेक्स्ट को पढ़ना |
"webNavigation" |
यह एक्सटेंशन को chrome.webNavigation एपीआई का ऐक्सेस देता है. | अपना ब्राउज़िंग इतिहास पढ़ना |
अनुमतियां अपडेट करें
किसी एक्सटेंशन को अतिरिक्त अनुमतियों के साथ अपडेट करने पर, वह कुछ समय के लिए बंद हो सकता है. उपयोगकर्ता को नई चेतावनी से सहमत होने के बाद, उसे फिर से चालू करना होगा.
अगर उपयोगकर्ता मैन्युअल रूप से किसी ऐसे एक्सटेंशन को अपडेट करता है जिसमें अब टैब की अनुमति शामिल है, तो उसे मैनेजमेंट पेज पर एक चेतावनी दिखेगी.
अगर एक्सटेंशन अपने-आप अपडेट होता है, तो यह तब तक के लिए बंद रहेगा, जब तक उपयोगकर्ता नए एक्सटेंशन के लिए सहमति नहीं देता अनुमतियां दी हैं.
इस समस्या से बचने के लिए, नई सुविधा को ज़रूरी नहीं बनाया जा सकता. साथ ही, इसमें अनुमतियों के नए अपडेट जोड़कर ऐसा किया जा सकता है
मेनिफ़ेस्ट में optional_permissions
मौजूद होगा.