একটি এক্সটেনশনের ওয়েবসাইট এবং বেশিরভাগ Chrome এপিআই অ্যাক্সেস করার ক্ষমতা তার ঘোষিত অনুমতি দ্বারা নির্ধারিত হয়৷ অনুমতি শুধুমাত্র তার কার্যকারিতার জন্য যা প্রয়োজন তা সীমাবদ্ধ করা উচিত। অনুমতি সীমিত করা একটি এক্সটেনশনের ক্ষমতা স্থাপন করে এবং যদি কোনো আক্রমণকারীর দ্বারা এক্সটেনশনের সাথে আপোস করা হয় তাহলে ডেটাতে সম্ভাব্য অনুপ্রবেশ হ্রাস করে৷ সুস্পষ্ট, ন্যূনতম এবং ঐচ্ছিক অনুমতি প্রয়োগ করে এক্সটেনশন এবং তাদের ব্যবহারকারীদের রক্ষা করুন।
অনুমতি সংগঠিত
অনুমতিগুলি হল পরিচিত স্ট্রিং যা একটি Chrome API নির্দেশ করে বা প্যাটার্নের সাথে মিল করে যা এক বা একাধিক হোস্টে অ্যাক্সেস দেয়৷ এগুলি ম্যানিফেস্টে তালিকাভুক্ত এবং প্রয়োজনীয় অনুমতি বা ঐচ্ছিক অনুমতি হিসাবে নির্দিষ্ট করা হয়েছে৷
{
"name": "Permissions Extension",
...
// required permissions
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
// optional permissions
"optional_permissions": [
"topSites",
"http://www.developer.chrome.com/*"
],
...
"manifest_version": 2
}
শুধুমাত্র এক্সটেনশনের মূল কার্যকারিতার জন্য প্রয়োজনীয় অনুমতিগুলিকে সীমাবদ্ধ করুন৷ একটি এক্সটেনশনের বর্তমানে প্রয়োজনের চেয়ে বেশি অনুমতির অনুরোধ করা উচিত নয়; আপডেটের সাথে প্রয়োজন হতে পারে এমন অনুমতির অনুরোধ করে ভবিষ্যতে প্রমাণ করবেন না।
ঐচ্ছিক বৈশিষ্ট্যগুলির জন্য প্রয়োজনীয় অনুমতিগুলি ঐচ্ছিক অনুমতি হিসাবে নিবন্ধিত হওয়া উচিত৷ এটি ব্যবহারকারীদের সিদ্ধান্ত নিতে দেয় যে তারা একটি এক্সটেনশন প্রদান করতে ইচ্ছুক এবং কোন বৈশিষ্ট্যগুলি কাঙ্ক্ষিত।
প্রয়োজনীয় অনুমতি সনাক্ত করুন
একটি সাধারণ এক্সটেনশনকে একাধিক অনুমতির অনুরোধ করতে হতে পারে এবং অনেক অনুমতি ইনস্টলেশনের সময় সতর্কতা প্রদর্শন করে। ব্যবহারকারীরা সীমিত সতর্কতা সহ একটি এক্সটেনশনকে বিশ্বাস করার সম্ভাবনা বেশি থাকে বা যখন তাদের অনুমতিগুলি ব্যাখ্যা করা হয়।
একটি এক্সটেনশনের মূল কার্যকারিতা সনাক্ত করুন এবং এটির জন্য কী অনুমতি প্রয়োজন। সতর্কতা সহ অনুমতির প্রয়োজন হলে বৈশিষ্ট্যগুলিকে ঐচ্ছিক করার কথা বিবেচনা করুন৷
ইভেন্ট সহ ঐচ্ছিক অনুমতি ট্রিগার
ঐচ্ছিক অনুমতির নমুনা এক্সটেনশনের মূল কার্যকারিতা নতুন ট্যাব পৃষ্ঠাকে ওভাররাইড করছে৷ একটি বৈশিষ্ট্য ব্যবহারকারীর দিনের লক্ষ্য প্রদর্শন করছে। এই বৈশিষ্ট্যটির জন্য শুধুমাত্র স্টোরেজ অনুমতি প্রয়োজন, যার মধ্যে একটি সতর্কতা অন্তর্ভুক্ত নয়।
এক্সটেনশন একটি অতিরিক্ত বৈশিষ্ট্য আছে; ব্যবহারকারীর শীর্ষ সাইটগুলি প্রদর্শন করা হচ্ছে। এই বৈশিষ্ট্যটির জন্য শীর্ষ সাইটগুলির অনুমতি প্রয়োজন, যার একটি সতর্কতা রয়েছে৷
ঐচ্ছিক হিসাবে সতর্কতা সহ অনুমতিগুলির উপর নির্ভরশীল বৈশিষ্ট্যগুলি বিকাশ করা এবং সেই বৈশিষ্ট্যগুলিকে অর্গানিকভাবে প্রবর্তন করা ব্যবহারকারীদের এক্সটেনশনের ঝুঁকিমুক্ত ভূমিকা দেয়৷ উপরন্তু, এটি ব্যবহারকারীদের একটি এক্সটেনশনের সাথে তাদের অভিজ্ঞতাকে আরও কাস্টমাইজ করার অনুমতি দেয় এবং সতর্কতা ব্যাখ্যা করার সুযোগ তৈরি করে।
সক্রিয় ট্যাব অনুমতি প্রতিস্থাপন করুন
activeTab
অনুমতি ব্যবহারকারী যে সাইটটিতে রয়েছে সেখানে অস্থায়ী অ্যাক্সেস মঞ্জুর করে এবং এক্সটেনশনকে বর্তমান ট্যাবে "tabs"
অনুমতি ব্যবহার করার অনুমতি দেয়। এটি অনেক ক্ষেত্রে "<all_urls>"
এর প্রয়োজনীয়তা প্রতিস্থাপন করে এবং ইনস্টলেশনের সময় কোনো সতর্কতা প্রদর্শন করে না।
সক্রিয় ট্যাব ছাড়া:
সক্রিয় ট্যাবের সাথে:
activeTab
অনুমতি একটি এক্সটেনশনকে বর্তমানে সক্রিয় ট্যাবে অস্থায়ী অ্যাক্সেস দেয় যখন ব্যবহারকারী এক্সটেনশনটি আহ্বান করে । যদি এক্সটেনশনটি আপস করা হয়, তবে আক্রমণকারীকে অ্যাক্সেস পাওয়ার আগে ব্যবহারকারীর এক্সটেনশনটি শুরু করার জন্য অপেক্ষা করতে হবে এবং সেই অ্যাক্সেসটি কেবল ট্যাবটি নেভিগেট বা বন্ধ না হওয়া পর্যন্ত স্থায়ী হবে৷
একটি ট্যাবের জন্য activeTab
অনুমতি সক্রিয় থাকা অবস্থায়, একটি এক্সটেনশন করতে পারে:
- সেই ট্যাবে
tabs.executeScript
বাtabs.insertCSS
কল করুন। - একটি API এর মাধ্যমে সেই ট্যাবের URL, শিরোনাম এবং ফেভিকন পান যা একটি
tabs.Tab
অবজেক্ট প্রদান করে৷ - webRequest API ব্যবহার করে ট্যাবের মূল ফ্রেমের উৎপত্তিতে ট্যাবে নেটওয়ার্ক অনুরোধগুলিকে ইন্টারসেপ্ট করুন৷ এক্সটেনশনটি সাময়িকভাবে ট্যাবের প্রধান ফ্রেমের উৎসের জন্য হোস্টের অনুমতি পায়।
নিম্নলিখিত ব্যবহারকারীর অঙ্গভঙ্গি activeTab
সক্ষম করে:
- একটি ব্রাউজার অ্যাকশন নির্বাহ করা হচ্ছে
- একটি পৃষ্ঠা ক্রিয়া সম্পাদন করা হচ্ছে
- একটি প্রসঙ্গ মেনু আইটেম নির্বাহ করা হচ্ছে
- কমান্ড API থেকে একটি কীবোর্ড শর্টকাট নির্বাহ করা হচ্ছে
- omnibox API থেকে একটি পরামর্শ গ্রহণ করা হচ্ছে
অ্যাক্সেসের অনুমতি দিচ্ছে
যদি একটি এক্সটেনশনের file://
URL গুলি অ্যাক্সেস করতে হয় বা ছদ্মবেশী মোডে কাজ করার প্রয়োজন হয়, ব্যবহারকারীদের chrome://extensions এ এক্সটেনশনের বিশদ পৃষ্ঠার ভিতরে সেই বৈশিষ্ট্যগুলির জন্য অ্যাক্সেস সক্ষম করতে হবে৷
extension.isAllowedIncognitoAccess()
কল করে বা extension.isAllowedFileSchemeAccess()
সহ file://
ইউআরএল-এ চালানোর জন্য একটি এক্সটেনশন ছদ্মবেশী মোডে সক্ষম করা আছে কিনা তা সনাক্ত করতে পারে।
অনুমতি বোঝা
এক্সটেনশন ব্যবহারকারীদের জন্য API দ্বারা প্রদত্ত ক্ষমতাগুলি বর্ণনা করার জন্য অনুমতি সতর্কতা বিদ্যমান, তবে এই সতর্কতাগুলির মধ্যে কিছু প্রথমে স্পষ্ট নাও হতে পারে৷ উদাহরণস্বরূপ, "tabs"
অনুমতি যোগ করার ফলে একটি আপাতদৃষ্টিতে সম্পর্কহীন সতর্কতা দেখা দেয়: এক্সটেনশনটি আপনার ব্রাউজিং কার্যকলাপ পড়তে পারে। যদিও chrome.tabs
API শুধুমাত্র নতুন ট্যাব খোলার জন্য ব্যবহার করা যেতে পারে, এটি তাদের tabs.Tab অবজেক্ট ব্যবহার করে প্রতিটি নতুন খোলা ট্যাবের সাথে যুক্ত URL দেখতেও ব্যবহার করা যেতে পারে।
যখন সম্ভব, বিপদজনক সতর্কতা এড়াতে ঐচ্ছিক অনুমতি বা কম শক্তিশালী API প্রয়োগ করুন।
সতর্কতা দেখা হচ্ছে
একটি এক্সটেনশন একটি আনপ্যাক করা ফাইল হিসাবে লোড করা হলে কোন অনুমতি সতর্কতা প্রদর্শিত হবে না. একটি এক্সটেনশনের অনুমতি সতর্কতা দেখতে, chrome://extensions
এ নেভিগেট করুন, বিকাশকারী মোড সক্ষম আছে তা নিশ্চিত করুন এবং প্যাক এক্সটেনশনে ক্লিক করুন৷
এক্সটেনশন রুট ডিরেক্টরি ক্ষেত্রে এক্সটেনশনের ফোল্ডারের পথটি নির্দিষ্ট করুন তারপর প্যাক এক্সটেনশন বোতামে ক্লিক করুন। প্রথম-বারের প্যাকেজের জন্য ব্যক্তিগত কী ক্ষেত্রটিকে উপেক্ষা করুন।
Chrome দুটি ফাইল তৈরি করবে, একটি .crx
ফাইল এবং একটি .pem
ফাইল, যেটিতে এক্সটেনশনের ব্যক্তিগত কী রয়েছে৷
ব্যক্তিগত চাবি হারাবেন না! .pem
ফাইলটি একটি গোপন এবং নিরাপদ স্থানে রাখুন; এক্সটেনশন আপডেট করার জন্য এটি প্রয়োজন হবে।
.crx
ফাইলটিকে Chrome এক্সটেনশনের ম্যানেজমেন্ট পৃষ্ঠায় নামিয়ে ইনস্টল করুন।
.crx
ফাইলটি ড্রপ করার পরে ব্রাউজার জিজ্ঞাসা করবে এক্সটেনশন যোগ করা যাবে কিনা এবং সতর্কতা প্রদর্শন করা যাবে।
সতর্কতা সহ অনুমতি
দ্রষ্টব্য: অনুমতি সারণীগুলি সর্বোত্তম প্রচেষ্টার ভিত্তিতে আপডেট করা হয় এবং বর্তমান সতর্কতাগুলির সাথে সামান্য অসঙ্গতি থাকতে পারে৷ অতিরিক্তভাবে, কিছু অনুমতি অন্যান্য অনুমতির সাথে যুক্ত হলে সতর্কতা প্রদর্শন নাও করতে পারে। উদাহরণস্বরূপ, যদি এক্সটেনশনটি "<all_urls>"
-এর অনুরোধ করে তবে "tabs"
সতর্কতা দেখাবে না। এক্সটেনশন অনুমতির জন্য দেখানো সাম্প্রতিকতম সতর্কতা যাচাই করতে, সতর্কবার্তা দেখার ধাপগুলি অনুসরণ করুন।
অনুমতি | বর্ণনা | সতর্কতা |
---|---|---|
| সমস্ত হোস্টে এক্সটেনশন অ্যাক্সেস মঞ্জুর করে। 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-এ আপনার এক্সটেনশন অ্যাক্সেস মঞ্জুর করে৷ | কুকিজ, জাভাস্ক্রিপ্ট, প্লাগইন, জিওলোকেশন, মাইক্রোফোন, ক্যামেরা ইত্যাদির মতো বৈশিষ্ট্যগুলিতে ওয়েবসাইটগুলির অ্যাক্সেস নিয়ন্ত্রণ করে এমন আপনার সেটিংস পরিবর্তন করুন৷ |
"debugger" | chrome.debugger API-তে আপনার এক্সটেনশন অ্যাক্সেস মঞ্জুর করে৷ |
|
"declarativeNetRequest" | chrome.declarativeNetRequest API-এ আপনার এক্সটেনশন অ্যাক্সেস মঞ্জুর করে। | পৃষ্ঠার বিষয়বস্তু ব্লক করুন |
"desktopCapture" | chrome.desktopCapture API-তে আপনার এক্সটেনশন অ্যাক্সেস মঞ্জুর করে। | আপনার পর্দার বিষয়বস্তু ক্যাপচার |
"downloads" | chrome.downloads API-তে আপনার এক্সটেনশন অ্যাক্সেস মঞ্জুর করে৷ | আপনার ডাউনলোড পরিচালনা করুন |
"geolocation" | ব্যবহারকারীকে অনুমতির জন্য অনুরোধ না করেই এক্সটেনশনটিকে HTML5 ভূ-অবস্থান API ব্যবহার করার অনুমতি দেয়৷ | আপনার শারীরিক অবস্থান সনাক্ত করুন |
"history" | chrome.history API-তে আপনার এক্সটেনশন অ্যাক্সেস মঞ্জুর করে। | আপনার ব্রাউজিং ইতিহাস পড়ুন এবং পরিবর্তন করুন |
"management" | chrome.management API-এ এক্সটেনশন অ্যাক্সেস মঞ্জুর করে। | আপনার অ্যাপ, এক্সটেনশন এবং থিম পরিচালনা করুন |
"nativeMessaging" | নেটিভ মেসেজিং API- এ এক্সটেনশন অ্যাক্সেস দেয়। | সহযোগী দেশীয় অ্যাপ্লিকেশনের সাথে যোগাযোগ করুন |
"notifications" | chrome.notifications API-তে আপনার এক্সটেনশন অ্যাক্সেস মঞ্জুর করে৷ | বিজ্ঞপ্তি প্রদর্শন করুন |
"pageCapture" | chrome.pageCapture API-এ এক্সটেনশন অ্যাক্সেস মঞ্জুর করে। | আপনি যে ওয়েবসাইটগুলিতে যান সেগুলিতে আপনার সমস্ত ডেটা পড়ুন এবং পরিবর্তন করুন৷ |
"privacy" | chrome.privacy API-এ এক্সটেনশন অ্যাক্সেস দেয়। | আপনার গোপনীয়তা-সম্পর্কিত সেটিংস পরিবর্তন করুন |
"proxy" | chrome.proxy API-এ এক্সটেনশন অ্যাক্সেস মঞ্জুর করে৷ | আপনি যে ওয়েবসাইটগুলিতে যান সেগুলিতে আপনার সমস্ত ডেটা পড়ুন এবং পরিবর্তন করুন৷ |
"system.storage" | chrome.system.storage API-এ এক্সটেনশন অ্যাক্সেস মঞ্জুর করে। | স্টোরেজ ডিভাইস সনাক্ত করুন এবং বের করুন |
"tabCapture" | chrome.tabCapture API-এ এক্সটেনশনগুলিকে অ্যাক্সেস দেয়৷ | আপনি যে ওয়েবসাইটগুলিতে যান সেগুলিতে আপনার সমস্ত ডেটা পড়ুন এবং পরিবর্তন করুন৷ |
"tabs" | chrome.tabs এবং chrome.windows সহ বেশ কয়েকটি API দ্বারা ব্যবহৃত Tab অবজেক্টের সুবিধাপ্রাপ্ত ক্ষেত্রগুলিতে এক্সটেনশন অ্যাক্সেস মঞ্জুর করে৷ অনেক পরিস্থিতিতে এই API ব্যবহার করার জন্য এক্সটেনশনের "tabs" অনুমতি ঘোষণা করার প্রয়োজন হবে না। | আপনার ব্রাউজিং ইতিহাস পড়ুন |
"topSites" | chrome.topSites API-এ এক্সটেনশন অ্যাক্সেস মঞ্জুর করে। | আপনার সবচেয়ে ঘন ঘন দেখা ওয়েবসাইটগুলির একটি তালিকা পড়ুন |
"ttsEngine" | chrome.ttsEngine API-এ এক্সটেনশন অ্যাক্সেস মঞ্জুর করে। | সংশ্লেষিত বক্তৃতা ব্যবহার করে উচ্চারিত সমস্ত পাঠ্য পড়ুন |
"webNavigation" | chrome.webNavigation API-এ এক্সটেনশন অ্যাক্সেস মঞ্জুর করে। | আপনার ব্রাউজিং ইতিহাস পড়ুন |
অনুমতি আপডেট করুন
অতিরিক্ত অনুমতি সহ একটি এক্সটেনশন আপডেট করলে তা সাময়িকভাবে অক্ষম হতে পারে। ব্যবহারকারীকে যেকোনো নতুন সতর্কবার্তায় সম্মত হওয়ার পরে এটি পুনরায় সক্রিয় করতে হবে।
যদি ব্যবহারকারী ম্যানুয়ালি একটি এক্সটেনশন আপডেট করে যা এখন ট্যাব অনুমতি অন্তর্ভুক্ত করে, তারা ব্যবস্থাপনা পৃষ্ঠায় একটি সতর্কতা পাবে।
যদি এক্সটেনশনটি স্বয়ংক্রিয়ভাবে আপডেট হয় তবে ব্যবহারকারী নতুন অনুমতিতে সম্মত না হওয়া পর্যন্ত এটি অক্ষম করা হবে।
নতুন বৈশিষ্ট্যটিকে ঐচ্ছিক করে এবং ম্যানিফেস্টে optional_permissions
এ নতুন অনুমতি আপডেট যোগ করে এটি এড়ানো যেতে পারে।