স্টোরেজ ও কুকি

এক্সটেনশন, সাধারণ ওয়েবসাইটের মতোই কুকি সেভ করতে এবং ওয়েব স্টোরেজ API অ্যাক্সেস করতে পারে। তবে, কিছু ক্ষেত্রে এক্সটেনশনে এগুলি আলাদাভাবে কাজ করে।

এক্সটেনশন API সম্পর্কে তথ্য পেতে browser.storage দেখুন।

স্টোরেজ

এক্সটেনশনে ওয়েব প্ল্যাটফর্ম স্টোরেজ API ব্যবহার করা প্রায়শই কাম্য। এই বিভাগে এক্সটেনশনের প্রসঙ্গে এইসব API-এর ব্যবহার সম্পর্কে আলোচনা করা হয়েছে। এটি কখনও কখনও ওয়েবে API-এর ব্যবহারের থেকে আলাদা হতে পারে।

পারসিস্টেন্স

কোনও ব্যবহারকারী ব্রাউজিং ডেটা মুছে দিলে এক্সটেনশন স্টোরেজ মুছে যায় না। এটি ওয়েব স্টোরেজ API (যেমন লোকাল স্টোরেজ ও IndexedDB) ব্যবহার করে স্টোর করা যেকোনও ডেটার ক্ষেত্রে প্রযোজ্য।

ডিফল্ট হিসেবে, এক্সটেনশন স্টোরেজের উপর সাধারণ কোটা সংক্রান্ত বিধিনিষেধের আওতায় থাকে, যা navigator.storage.estimate()-এ কল করে চেক করা যায়। এছাড়াও, খুব বেশি মেমরি প্রেসার থাকলে স্টোরেজ খালি করা হতে পারে, যদিও এটি খুব কমই ঘটে। এটি এড়াতে:

  • "unlimitedStorage" অনুমতির জন্য অনুরোধ করুন, যা এক্সটেনশন ও ওয়েব স্টোরেজ API, দু'টিকেই প্রভাবিত করে এবং কোটা সংক্রান্ত বিধিনিষেধ ও সরিয়ে দেওয়া, দু'টি থেকেই এক্সটেনশনকে অব্যাহতি দেয়।
  • উচ্ছেদ থেকে সুরক্ষা পেতে navigator.storage.persist() নম্বরে কল করুন।

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

সার্ভিস ওয়ার্কারে অ্যাক্সেস

IndexedDB ও Cache Storage API, পরিষেবা ওয়ার্কারে অ্যাক্সেস করা যায়। তবে, স্থানীয় স্টোরেজ ও সেশন স্টোরেজ নয়।

সার্ভিস ওয়ার্কার থেকে লোকাল স্টোরেজ বা সেশন স্টোরেজ অ্যাক্সেস করতে চাইলে, অফস্ক্রিন ডকুমেন্ট ব্যবহার করুন।

পার্টিশনিং

পার্টিশনিং হল এমন একটি প্রসেস যেখানে স্টোর করা ডেটা অ্যাক্সেস করার জায়গা সীমিত করার জন্য কী ব্যবহার করা হয়। স্টোরেজ ঐতিহাসিকভাবে অরিজিন দ্বারা কী করা হয়েছে।

Chrome 115 থেকে শুরু করে, স্টোরেজ পার্টিশনিং, কীভাবে পার্টিশনিং কী নির্দিষ্ট করা হয় তাতে পরিবর্তন নিয়ে আসে যাতে নির্দিষ্ট ধরনের ক্রস-সাইট ট্র্যাকিং আটকানো যায়। বাস্তবে, এর অর্থ হল যে সাইট A, সাইট B-এর কন্টেন্ট থাকা একটি iframe এম্বেড করলে, সাইট B সেই একই স্টোরেজ অ্যাক্সেস করতে পারবে না যা সাধারণত সরাসরি নেভিগেট করলে অ্যাক্সেস করতে পারত।

এক্সটেনশনে এর প্রভাব কমাতে, দুটি ছাড় প্রযোজ্য:

  • chrome-extension:// স্কিম সহ কোনও পৃষ্ঠা কোনও সাইটে এম্বেড করা থাকলে, স্টোরেজ পার্টিশনিং প্রয়োগ করা হবে না এবং এক্সটেনশনের কাছে এর টপ-লেভেল পার্টিশনের অ্যাক্সেস থাকবে।
  • chrome-extension:// স্কিম সহ কোনও পৃষ্ঠায় iframe থাকলে এবং এক্সটেনশনের কাছে এম্বেড করা সাইটের জন্য হোস্ট সংক্রান্ত অনুমতি থাকলে, সেই সাইটের কাছেও এর টপ-লেভেল পার্টিশনে অ্যাক্সেস থাকবে।

কুকিজ

কুকি নির্দিষ্ট ডোমেন ও পাথের সাথে যুক্ত কী-ভ্যালু পেয়ার সেভ করার একটি উপায় প্রদান করে। এক্সটেনশনে এগুলির সীমিত ভ্যালু থাকলেও, আপনার যদি নির্দিষ্ট ব্যবহারের ক্ষেত্র থাকে বা আপনি যদি থার্ড-পার্টি স্ক্রিপ্ট বান্ডেল করে থাকেন যা সেগুলিকে প্রয়োগ করার জন্য ব্যবহার করে, তাহলে এগুলির আচরণ বোঝা সহায়ক হতে পারে।

সুরক্ষিত কুকি

Secure কুকি অ্যাট্রিবিউট শুধুমাত্র https:// স্কিমের ক্ষেত্রে কাজ করে। ফলে, chrome-extension:// পৃষ্ঠা এই অ্যাট্রিবিউট সহ কুকি সেট করতে পারে না।

এর অর্থ হল, এক্সটেনশন পৃষ্ঠা অন্যান্য কুকি অ্যাট্রিবিউট ব্যবহার করতে পারবে না যেখানে Secure অ্যাট্রিবিউট প্রয়োজনীয়:

পার্টিশনিং ও SameSite আচরণ

chrome-extension:// পৃষ্ঠায় সেট করা কুকি সবসময় SameSite=Lax ব্যবহার করে। এর ফলে, কোনও এক্সটেনশন তার নিজস্ব অরিজিন থেকে সেট করা কুকি কখনই ফ্রেমের মধ্যে অ্যাক্সেস করতে পারবে না এবং পার্টিশনিং প্রাসঙ্গিক নয়।

এক্সটেনশন পৃষ্ঠায় লোড করা ফ্রেমের মধ্যে থাকা থার্ড-পার্টি সাইট অথবা এক্সটেনশন পৃষ্ঠা থেকে থার্ড-পার্টি অরিজিনে করা অনুরোধের মতো থার্ড-পার্টি সাইটের সাথে যুক্ত কুকির ক্ষেত্রে, কুকি দুটি বিষয় ছাড়া ওয়েবের মতোই আচরণ করে:

  • কোনও ট্যাবের টপ-লেভেল পৃষ্ঠাটি chrome-extension:// পৃষ্ঠা হলে, সাবফ্রেমেও থার্ড-পার্টি কুকি কখনও ব্লক করা হয় না।
  • কোনও এক্সটেনশন থেকে থার্ড-পার্টির কাছে করা অনুরোধকে সেম-সাইট হিসেবে বিবেচনা করা হয়, যদি এক্সটেনশনের কাছে থার্ড-পার্টির জন্য হোস্ট সংক্রান্ত অনুমতি থাকে। এর অর্থ হল SameSite=Strict কুকি পাঠানো যাবে। মনে রাখবেন, এটি শুধুমাত্র নেটওয়ার্ক অনুরোধের ক্ষেত্রে প্রযোজ্য, document.cookie জাভাস্ক্রিপ্টের মাধ্যমে অ্যাক্সেস করার ক্ষেত্রে নয় এবং থার্ড-পার্টি কুকি ব্লক করা থাকলে এটি প্রযোজ্য হবে না।

মনে রাখবেন, থার্ড-পার্টি কুকি সংক্রান্ত সেটিংস প্রাইভেসি স্যান্ডবক্সের কাজের দ্বারা প্রভাবিত হয় এবং এর টাইমলাইন অনুযায়ী অ্যাডজাস্ট করা হয়।

browser.cookies API প্রতিটি API পদ্ধতির সাথে ব্যবহার করার জন্য পার্টিশন কী-এর উপর নিয়ন্ত্রণ প্রদান করে। আরও তথ্যের জন্য, API রেফারেন্স দেখুন।