ব্যবহারকারীর গোপনীয়তা রক্ষা করুন

ব্যবহারকারীরা এমন কোনো এক্সটেনশন ইনস্টল করবেন না যা তাদের গোপনীয়তা লঙ্ঘন করে অথবা প্রয়োজনের চেয়ে বেশি অনুমতি চায়। অনুমতির অনুরোধগুলো ব্যবহারকারীদের কাছে বোধগম্য হওয়া উচিত এবং এক্সটেনশনটি কার্যকর করার জন্য প্রয়োজনীয় গুরুত্বপূর্ণ তথ্যের মধ্যেই সীমাবদ্ধ থাকা উচিত। যে এক্সটেনশনগুলো ব্যবহারকারীর কোনো ডেটা সংগ্রহ বা প্রেরণ করে, সেগুলোকে অবশ্যই ‘ব্যবহারকারীর গোপনীয়তা সুরক্ষা’ শীর্ষক নীতিমালা মেনে চলতে হবে।

সম্প্রসারণ ব্যবহারকারীদের পরিচয় সুরক্ষিত রাখতে এই সতর্কতাগুলো অবলম্বন করে তাদের সুরক্ষা ও সম্মান নিশ্চিত করুন।

প্রয়োজনীয় অনুমতি হ্রাস করুন

একটি এক্সটেনশন যে API-গুলো অ্যাক্সেস করতে পারে, তা ম্যানিফেস্টের permissions ফিল্ডে নির্দিষ্ট করা থাকে। যত বেশি পারমিশন দেওয়া হয়, আক্রমণকারীর কাছে তথ্য হাতিয়ে নেওয়ার তত বেশি সুযোগ থাকে। শুধুমাত্র সেই API-গুলোই তালিকাভুক্ত করা উচিত যেগুলোর উপর একটি এক্সটেনশন নির্ভর করে, এবং কম হস্তক্ষেপমূলক বিকল্পগুলো বিবেচনা করা উচিত। একটি এক্সটেনশন যত কম পারমিশনের জন্য অনুরোধ করবে, ব্যবহারকারীকে তত কম পারমিশন সতর্কতা দেখানো হবে। সীমিত সতর্কতাযুক্ত এক্সটেনশন ইনস্টল করার সম্ভাবনা ব্যবহারকারীদের বেশি থাকে।

এক্সটেনশনগুলোর এমন সব পারমিশন চেয়ে ব্যবহারকারীর ডেটাতে অ্যাক্সেসকে "ভবিষ্যতের জন্য সুরক্ষিত" করা উচিত নয়, যেগুলোর বর্তমানে প্রয়োজন নেই কিন্তু ভবিষ্যতে প্রয়োগ করা হতে পারে। এক্সটেনশন আপডেটের সাথে নতুন পারমিশনগুলো অন্তর্ভুক্ত করুন এবং সেগুলোকে ঐচ্ছিক করার কথা বিবেচনা করুন।

সক্রিয় ট্যাব

যেসব এক্সটেনশন স্ক্রিপ্ট ইনজেক্ট করার জন্য হোস্ট পারমিশন ব্যবহার করে, তারা প্রায়শই এর পরিবর্তে activeTab ব্যবহার করতে পারে। activeTab পারমিশনটি একটি এক্সটেনশনকে বর্তমানে সক্রিয় ট্যাবে অস্থায়ী অ্যাক্সেস দেয়, তবে তা শুধুমাত্র তখনই যখন ব্যবহারকারী এক্সটেনশনটি চালু করে । ব্যবহারকারী যখন বর্তমান ট্যাব থেকে অন্য ট্যাবে চলে যায় বা ট্যাবটি বন্ধ করে দেয়, তখন এই অ্যাক্সেস বন্ধ হয়ে যায়। এটি <all_urls> এর অনেক ব্যবহারের একটি বিকল্প হিসেবে কাজ করে।

{
  "name": "Very Secure Extension",
  "version": "1.0",
  "description": "Example of a Secure Extension",
  "permissions": ["activeTab"],
  "manifest_version": 3
}

ইনস্টলেশনের সময় activeTab পারমিশন কোনো সতর্কীকরণ বার্তা প্রদর্শন করে না।

ঐচ্ছিক অনুমতি বেছে নিন

ঐচ্ছিক অনুমতি অন্তর্ভুক্ত করার মাধ্যমে ব্যবহারকারীদের একটি এক্সটেনশন থেকে তাদের প্রয়োজনীয় বৈশিষ্ট্য এবং অনুমতি বেছে নেওয়ার ক্ষমতা দিন। যদি কোনো বৈশিষ্ট্য একটি এক্সটেনশনের মূল কার্যকারিতার জন্য অপরিহার্য না হয়, তবে সেটিকে ঐচ্ছিক করুন এবং API বা ডোমেইনটিকে optional_permissions ফিল্ডে স্থানান্তর করুন।

{
  "name": "Very Secure Extension",
  ...
  "optional_permissions": [ "tabs", ],
  "optional_host_permissions": ["https://www.google.com/" ],
  ...
}

ঐচ্ছিক অনুমতি অন্তর্ভুক্ত করার ফলে, ব্যবহারকারী যখন প্রাসঙ্গিক ফিচারটি চালু করেন, তখন এক্সটেনশনটি ব্যাখ্যা করতে পারে যে কেন একটি নির্দিষ্ট অনুমতির প্রয়োজন। এক্সটেনশনটি ব্যবহারকারীকে ফিচারগুলো চালু করার জন্য একটি বিকল্প প্রদান করতে পারে।

অনুমতি সক্রিয় করতে অনুরোধকারী একটি পপআপের স্ক্রিনশট।

Okay! ক্লিক করলে সার্ভিস ওয়ার্কারে নিম্নলিখিত ইভেন্টটি ট্রিগার হবে।

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();
      }
    }
  );
});

এরপর ব্যবহারকারীকে নিম্নলিখিত অনুরোধটি করা হবে।

ঐচ্ছিক অনুমতি অনুরোধের একটি স্ক্রিনশট।

এক্সটেনশন আপডেটের মাধ্যমেও ঐচ্ছিক অনুমতি প্রয়োগ করা যেতে পারে। এর ফলে, এক্সটেনশনটি নিষ্ক্রিয় না করেই নতুন ফিচারটি ব্যবহারকারীদের জন্য উপলব্ধ হবে, যা নতুন আবশ্যক অনুমতি দিয়ে আপডেট করার ক্ষেত্রে ঘটতে পারে।

ব্যবহারকারীর তথ্য সীমিত ও সুরক্ষিত করুন

একটি এক্সটেনশনের জন্য শুধুমাত্র ন্যূনতম পরিমাণ ডেটা অনুরোধ করুন। একটি এক্সটেনশন ব্যবহারকারীর কাছ থেকে যত কম তথ্য চাইবে, এক্সটেনশনটি হ্যাক হলে ঝুঁকির সম্ভাবনাও তত কম থাকবে।

অনুরোধকৃত সকল ব্যবহারকারীর ডেটা যত্ন সহকারে ব্যবহার করা উচিত। একটি নিবন্ধিত ডোমেইনসহ সুরক্ষিত সার্ভারে ডেটা সংরক্ষণ ও পুনরুদ্ধার করুন। সংযোগ করার জন্য সর্বদা HTTPS ব্যবহার করুন এবং এক্সটেনশনের ক্লায়েন্ট সাইডে সংবেদনশীল ব্যবহারকারীর ডেটা রাখা থেকে বিরত থাকুন, কারণ এক্সটেনশনের স্টোরেজ এনক্রিপ্টেড থাকে না।

ডেটা সংরক্ষণ এবং ছদ্মবেশী মোড

এক্সটেনশনগুলো স্টোরেজ এপিআই (API) ব্যবহার করে, অথবা সার্ভার রিকোয়েস্ট পাঠানোর মাধ্যমে ডেটা সেভ করতে পারে। যখন এক্সটেনশনটির কিছু সেভ করার প্রয়োজন হয়, তখন প্রথমে বিবেচনা করুন যে এটি কোনো ইনকগনিটো উইন্ডো থেকে করা হচ্ছে কি না। ডিফল্টভাবে, এক্সটেনশনগুলো ইনকগনিটো উইন্ডোতে চলে না।

ইনকগনিটো মোড এই প্রতিশ্রুতি দেয় যে উইন্ডোটি কোনো চিহ্ন রাখবে না। ইনকগনিটো উইন্ডো থেকে ডেটা নিয়ে কাজ করার সময় এক্সটেনশনগুলোর এই প্রতিশ্রুতি রক্ষা করা উচিত। যদি কোনো এক্সটেনশন সাধারণত ব্রাউজিং হিস্টরি সংরক্ষণ করে, তবে ইনকগনিটো উইন্ডো থেকে হিস্টরি সংরক্ষণ করবেন না। তবে, এক্সটেনশনগুলো যেকোনো উইন্ডো, তা ইনকগনিটো হোক বা না হোক, তার সেটিং প্রেফারেন্স সংরক্ষণ করতে পারে।

কোনো উইন্ডো ইনকগনিটো মোডে আছে কিনা তা শনাক্ত করতে, সংশ্লিষ্ট tabs.Tab অথবা windows.Window অবজেক্টের incognito প্রপার্টিটি পরীক্ষা করুন।

function saveTabData(tab) {
  if (tab.incognito) {
    return;
  } else {
    chrome.storage.local.set({data: tab.url});
  }
}