একটি সাধারণ ওয়েবসাইটের মতোই এক্সটেনশনগুলো কুকি সংরক্ষণ করতে এবং ওয়েব স্টোরেজ এপিআই অ্যাক্সেস করতে পারে। তবে, কিছু ক্ষেত্রে এক্সটেনশনগুলোতে এগুলোর আচরণ ভিন্ন হয়।
এক্সটেনশন এপিআই সম্পর্কে তথ্যের জন্য browser.storage দেখুন।
স্টোরেজ
এক্সটেনশনগুলিতে প্রায়শই ওয়েব প্ল্যাটফর্ম স্টোরেজ এপিআই ব্যবহার করা প্রয়োজন হয়। এই বিভাগে এক্সটেনশনের প্রেক্ষাপটে এই এপিআইগুলির আচরণ অন্বেষণ করা হয়েছে, যা কখনও কখনও ওয়েবে তাদের আচরণের থেকে ভিন্ন হতে পারে।
অধ্যবসায়
ব্যবহারকারী ব্রাউজিং ডেটা মুছে ফেললেও এক্সটেনশন স্টোরেজ পরিষ্কার হয় না। এটি ওয়েব স্টোরেজ এপিআই (যেমন লোকাল স্টোরেজ এবং ইনডেক্সডডিবি ) ব্যবহার করে সংরক্ষিত যেকোনো ডেটার ক্ষেত্রে প্রযোজ্য।
ডিফল্টরূপে, এক্সটেনশনগুলি স্টোরেজের উপর সাধারণ কোটা সীমাবদ্ধতার অধীন, যা navigator.storage.estimate() কল করে পরীক্ষা করা যেতে পারে। অতিরিক্ত মেমোরি চাপের কারণে স্টোরেজ খালিও হয়ে যেতে পারে, যদিও এটি বিরল। এটি এড়াতে:
-
"unlimitedStorage"পারমিশনটির জন্য অনুরোধ করুন, যা এক্সটেনশন এবং ওয়েব স্টোরেজ এপিআই উভয়কেই প্রভাবিত করে এবং এক্সটেনশনগুলিকে কোটা সীমাবদ্ধতা ও উচ্ছেদ উভয় থেকেই অব্যাহতি দেয়। - উচ্ছেদ থেকে সুরক্ষার জন্য
navigator.storage.persist()কল করুন।
এক্সটেনশন স্টোরেজটি এক্সটেনশনের অরিজিন জুড়ে শেয়ার করা হয়, যার মধ্যে রয়েছে এক্সটেনশন সার্ভিস ওয়ার্কার, যেকোনো এক্সটেনশন পেজ (পপআপ এবং সাইড প্যানেল সহ), এবং অফস্ক্রিন ডকুমেন্ট। কন্টেন্ট স্ক্রিপ্টে, ওয়েব স্টোরেজ এপিআই কল করলে এক্সটেনশন থেকে নয়, বরং সেই হোস্ট পেজ থেকে ডেটা অ্যাক্সেস করা হয় যেখানে কন্টেন্ট স্ক্রিপ্টটি ইনজেক্ট করা হয়েছে।
পরিষেবা কর্মীদের প্রবেশাধিকার
সার্ভিস ওয়ার্কারগুলিতে IndexedDB এবং Cache Storage API-গুলি ব্যবহার করা যায়। তবে, Local Storage এবং Session Storage ব্যবহার করা যায় না।
সার্ভিস ওয়ার্কার থেকে লোকাল স্টোরেজ বা সেশন স্টোরেজ অ্যাক্সেস করার প্রয়োজন হলে, একটি অফস্ক্রিন ডকুমেন্ট ব্যবহার করুন।
বিভাজন
পার্টিশনিং হলো সংরক্ষিত ডেটার জন্য কী (key) ব্যবহার করে সেটির অ্যাক্সেস সীমিত করার একটি প্রক্রিয়া। ঐতিহাসিকভাবে, স্টোরেজকে তার উৎস অনুসারে কী-যুক্ত করা হতো।
ক্রোম ১১৫ থেকে, নির্দিষ্ট ধরণের ক্রস-সাইট ট্র্যাকিং প্রতিরোধ করার জন্য স্টোরেজ পার্টিশনিং কী-এর সংজ্ঞায় পরিবর্তন আনা হয়েছে। এর বাস্তব অর্থ হলো, যদি সাইট A, সাইট B-কে ধারণকারী একটি আইফ্রেম এমবেড করে, তবে সাইট B সেই একই স্টোরেজ অ্যাক্সেস করতে পারবে না যা সে সাধারণত সরাসরি নেভিগেট করলে পেত।
মেয়াদ বৃদ্ধির ক্ষেত্রে এর প্রভাব প্রশমিত করার জন্য দুটি ছাড় প্রযোজ্য:
- যদি
chrome-extension://স্কিমযুক্ত কোনো পৃষ্ঠা কোনো সাইটে এমবেড করা হয়, তাহলে স্টোরেজ পার্টিশনিং প্রযোজ্য হবে না এবং এক্সটেনশনটি তার শীর্ষ-স্তরের পার্টিশনে প্রবেশাধিকার পাবে। - যদি
chrome-extension://স্কিমযুক্ত কোনো পৃষ্ঠায় একটি আইফ্রেম অন্তর্ভুক্ত থাকে, এবং এক্সটেনশনটির যে সাইটটি এমবেড করা হচ্ছে তার জন্য হোস্ট পারমিশন থাকে, তাহলে সেই সাইটটিও এর টপ-লেভেল পার্টিশনে অ্যাক্সেস পাবে।
কুকি
কুকি একটি নির্দিষ্ট ডোমেইন এবং পাথের সাথে যুক্ত কী-ভ্যালু পেয়ার সংরক্ষণ করার একটি উপায় প্রদান করে। এক্সটেনশনের ক্ষেত্রে এগুলোর উপযোগিতা সীমিত, কিন্তু আপনার যদি কোনো নির্দিষ্ট ব্যবহারের ক্ষেত্র থাকে অথবা আপনি যদি এমন কোনো থার্ড-পার্টি স্ক্রিপ্ট যুক্ত করে থাকেন যা তার বাস্তবায়নে কুকি ব্যবহার করে, তবে এগুলোর আচরণ বোঝা সহায়ক হতে পারে।
নিরাপদ কুকি
Secure cookie attribute শুধুমাত্র https:// স্কিমের জন্য সমর্থিত। ফলস্বরূপ, chrome-extension:// পেজগুলো এই অ্যাট্রিবিউট ব্যবহার করে কুকি সেট করতে পারে না।
এর মানে এও যে, যেখানে Secure অ্যাট্রিবিউটটি আবশ্যক, সেখানে এক্সটেনশন পেজগুলো অন্য কোনো কুকি অ্যাট্রিবিউট ব্যবহার করতে পারবে না:
পার্টিশনিং এবং সেমসাইট আচরণ
chrome-extension:// পেজগুলিতে সেট করা কুকিগুলি সর্বদা SameSite=Lax ব্যবহার করে। ফলস্বরূপ, কোনো এক্সটেনশন দ্বারা তার নিজস্ব অরিজিনে সেট করা কুকিগুলি ফ্রেমে কখনও অ্যাক্সেস করা যায় না এবং পার্টিশনিং প্রাসঙ্গিক হয় না।
তৃতীয় পক্ষের সাইটের সাথে যুক্ত কুকিগুলির ক্ষেত্রে, যেমন কোনো এক্সটেনশন পেজের ফ্রেমে লোড হওয়া তৃতীয় পক্ষের সাইট, অথবা কোনো এক্সটেনশন পেজ থেকে তৃতীয় পক্ষের অরিজিনে করা অনুরোধের ক্ষেত্রে, কুকিগুলি দুটি বিষয় ছাড়া ওয়েবের মতোই আচরণ করে:
- যদি কোনো নির্দিষ্ট ট্যাবের শীর্ষ-স্তরের পৃষ্ঠাটি একটি
chrome-extension://পৃষ্ঠা হয়, তাহলে সাবফ্রেমেও তৃতীয়-পক্ষের কুকি কখনও ব্লক করা হয় না। - কোনো এক্সটেনশন থেকে তৃতীয় পক্ষের কাছে করা অনুরোধগুলোকে সেম-সাইট (same-site) হিসেবে গণ্য করা হয়, যদি এক্সটেনশনটির সেই তৃতীয় পক্ষের জন্য হোস্ট পারমিশন থাকে। এর মানে হলো
SameSite=Strictকুকি পাঠানো যেতে পারে। উল্লেখ্য যে, এটি শুধুমাত্র নেটওয়ার্ক অনুরোধের ক্ষেত্রে প্রযোজ্য, জাভাস্ক্রিপ্টেdocument.cookieএর মাধ্যমে অ্যাক্সেসের ক্ষেত্রে নয়, এবং তৃতীয় পক্ষের কুকি ব্লক করা থাকলে এটি প্রযোজ্য হয় না।
উল্লেখ্য যে, থার্ড-পার্টি কুকি সংক্রান্ত সেটিংস প্রাইভেসি স্যান্ডবক্সের কাজ দ্বারা প্রভাবিত হয় এবং এর সময়সীমা অনুযায়ী তা সমন্বয় করা হয়।
browser.cookies API প্রতিটি API মেথডের সাথে ব্যবহার করার জন্য পার্টিশন কী-এর উপর নিয়ন্ত্রণ প্রদান করে। আরও তথ্যের জন্য, API রেফারেন্স দেখুন।
একটি সাধারণ ওয়েবসাইটের মতোই এক্সটেনশনগুলো কুকি সংরক্ষণ করতে এবং ওয়েব স্টোরেজ এপিআই অ্যাক্সেস করতে পারে। তবে, কিছু ক্ষেত্রে এক্সটেনশনগুলোতে এগুলোর আচরণ ভিন্ন হয়।
এক্সটেনশন এপিআই সম্পর্কে তথ্যের জন্য browser.storage দেখুন।
স্টোরেজ
এক্সটেনশনগুলিতে প্রায়শই ওয়েব প্ল্যাটফর্ম স্টোরেজ এপিআই ব্যবহার করা প্রয়োজন হয়। এই বিভাগে এক্সটেনশনের প্রেক্ষাপটে এই এপিআইগুলির আচরণ অন্বেষণ করা হয়েছে, যা কখনও কখনও ওয়েবে তাদের আচরণের থেকে ভিন্ন হতে পারে।
অধ্যবসায়
ব্যবহারকারী ব্রাউজিং ডেটা মুছে ফেললেও এক্সটেনশন স্টোরেজ পরিষ্কার হয় না। এটি ওয়েব স্টোরেজ এপিআই (যেমন লোকাল স্টোরেজ এবং ইনডেক্সডডিবি ) ব্যবহার করে সংরক্ষিত যেকোনো ডেটার ক্ষেত্রে প্রযোজ্য।
ডিফল্টরূপে, এক্সটেনশনগুলি স্টোরেজের উপর সাধারণ কোটা সীমাবদ্ধতার অধীন, যা navigator.storage.estimate() কল করে পরীক্ষা করা যেতে পারে। অতিরিক্ত মেমোরি চাপের কারণে স্টোরেজ খালিও হয়ে যেতে পারে, যদিও এটি বিরল। এটি এড়াতে:
-
"unlimitedStorage"পারমিশনটির জন্য অনুরোধ করুন, যা এক্সটেনশন এবং ওয়েব স্টোরেজ এপিআই উভয়কেই প্রভাবিত করে এবং এক্সটেনশনগুলিকে কোটা সীমাবদ্ধতা ও উচ্ছেদ উভয় থেকেই অব্যাহতি দেয়। - উচ্ছেদ থেকে সুরক্ষার জন্য
navigator.storage.persist()কল করুন।
এক্সটেনশন স্টোরেজটি এক্সটেনশনের অরিজিন জুড়ে শেয়ার করা হয়, যার মধ্যে রয়েছে এক্সটেনশন সার্ভিস ওয়ার্কার, যেকোনো এক্সটেনশন পেজ (পপআপ এবং সাইড প্যানেল সহ), এবং অফস্ক্রিন ডকুমেন্ট। কন্টেন্ট স্ক্রিপ্টে, ওয়েব স্টোরেজ এপিআই কল করলে এক্সটেনশন থেকে নয়, বরং সেই হোস্ট পেজ থেকে ডেটা অ্যাক্সেস করা হয় যেখানে কন্টেন্ট স্ক্রিপ্টটি ইনজেক্ট করা হয়েছে।
পরিষেবা কর্মীদের প্রবেশাধিকার
সার্ভিস ওয়ার্কারগুলিতে IndexedDB এবং Cache Storage API-গুলি ব্যবহার করা যায়। তবে, Local Storage এবং Session Storage ব্যবহার করা যায় না।
সার্ভিস ওয়ার্কার থেকে লোকাল স্টোরেজ বা সেশন স্টোরেজ অ্যাক্সেস করার প্রয়োজন হলে, একটি অফস্ক্রিন ডকুমেন্ট ব্যবহার করুন।
বিভাজন
পার্টিশনিং হলো সংরক্ষিত ডেটার জন্য কী (key) ব্যবহার করে সেটির অ্যাক্সেস সীমিত করার একটি প্রক্রিয়া। ঐতিহাসিকভাবে, স্টোরেজকে তার উৎস অনুসারে কী-যুক্ত করা হতো।
ক্রোম ১১৫ থেকে, নির্দিষ্ট ধরণের ক্রস-সাইট ট্র্যাকিং প্রতিরোধ করার জন্য স্টোরেজ পার্টিশনিং কী-এর সংজ্ঞায় পরিবর্তন আনা হয়েছে। এর বাস্তব অর্থ হলো, যদি সাইট A, সাইট B-কে ধারণকারী একটি আইফ্রেম এমবেড করে, তবে সাইট B সেই একই স্টোরেজ অ্যাক্সেস করতে পারবে না যা সে সাধারণত সরাসরি নেভিগেট করলে পেত।
মেয়াদ বৃদ্ধির ক্ষেত্রে এর প্রভাব প্রশমিত করার জন্য দুটি ছাড় প্রযোজ্য:
- যদি
chrome-extension://স্কিমযুক্ত কোনো পৃষ্ঠা কোনো সাইটে এমবেড করা হয়, তাহলে স্টোরেজ পার্টিশনিং প্রযোজ্য হবে না এবং এক্সটেনশনটি তার শীর্ষ-স্তরের পার্টিশনে প্রবেশাধিকার পাবে। - যদি
chrome-extension://স্কিমযুক্ত কোনো পৃষ্ঠায় একটি আইফ্রেম অন্তর্ভুক্ত থাকে, এবং এক্সটেনশনটির যে সাইটটি এমবেড করা হচ্ছে তার জন্য হোস্ট পারমিশন থাকে, তাহলে সেই সাইটটিও এর টপ-লেভেল পার্টিশনে অ্যাক্সেস পাবে।
কুকি
কুকি একটি নির্দিষ্ট ডোমেইন এবং পাথের সাথে যুক্ত কী-ভ্যালু পেয়ার সংরক্ষণ করার একটি উপায় প্রদান করে। এক্সটেনশনের ক্ষেত্রে এগুলোর উপযোগিতা সীমিত, কিন্তু আপনার যদি কোনো নির্দিষ্ট ব্যবহারের ক্ষেত্র থাকে অথবা আপনি যদি এমন কোনো থার্ড-পার্টি স্ক্রিপ্ট যুক্ত করে থাকেন যা তার বাস্তবায়নে কুকি ব্যবহার করে, তবে এগুলোর আচরণ বোঝা সহায়ক হতে পারে।
নিরাপদ কুকি
Secure cookie attribute শুধুমাত্র https:// স্কিমের জন্য সমর্থিত। ফলস্বরূপ, chrome-extension:// পেজগুলো এই অ্যাট্রিবিউট ব্যবহার করে কুকি সেট করতে পারে না।
এর মানে এও যে, যেখানে Secure অ্যাট্রিবিউটটি আবশ্যক, সেখানে এক্সটেনশন পেজগুলো অন্য কোনো কুকি অ্যাট্রিবিউট ব্যবহার করতে পারবে না:
পার্টিশনিং এবং সেমসাইট আচরণ
chrome-extension:// পেজগুলিতে সেট করা কুকিগুলি সর্বদা SameSite=Lax ব্যবহার করে। ফলস্বরূপ, কোনো এক্সটেনশন দ্বারা তার নিজস্ব অরিজিনে সেট করা কুকিগুলি ফ্রেমে কখনও অ্যাক্সেস করা যায় না এবং পার্টিশনিং প্রাসঙ্গিক হয় না।
তৃতীয় পক্ষের সাইটের সাথে যুক্ত কুকিগুলির ক্ষেত্রে, যেমন কোনো এক্সটেনশন পেজের ফ্রেমে লোড হওয়া তৃতীয় পক্ষের সাইট, অথবা কোনো এক্সটেনশন পেজ থেকে তৃতীয় পক্ষের অরিজিনে করা অনুরোধের ক্ষেত্রে, কুকিগুলি দুটি বিষয় ছাড়া ওয়েবের মতোই আচরণ করে:
- যদি কোনো নির্দিষ্ট ট্যাবের শীর্ষ-স্তরের পৃষ্ঠাটি একটি
chrome-extension://পৃষ্ঠা হয়, তাহলে সাবফ্রেমেও তৃতীয়-পক্ষের কুকি কখনও ব্লক করা হয় না। - কোনো এক্সটেনশন থেকে তৃতীয় পক্ষের কাছে করা অনুরোধগুলোকে সেম-সাইট (same-site) হিসেবে গণ্য করা হয়, যদি এক্সটেনশনটির সেই তৃতীয় পক্ষের জন্য হোস্ট পারমিশন থাকে। এর মানে হলো
SameSite=Strictকুকি পাঠানো যেতে পারে। উল্লেখ্য যে, এটি শুধুমাত্র নেটওয়ার্ক অনুরোধের ক্ষেত্রে প্রযোজ্য, জাভাস্ক্রিপ্টেdocument.cookieএর মাধ্যমে অ্যাক্সেসের ক্ষেত্রে নয়, এবং তৃতীয় পক্ষের কুকি ব্লক করা থাকলে এটি প্রযোজ্য হয় না।
উল্লেখ্য যে, থার্ড-পার্টি কুকি সংক্রান্ত সেটিংস প্রাইভেসি স্যান্ডবক্সের কাজ দ্বারা প্রভাবিত হয় এবং এর সময়সীমা অনুযায়ী তা সমন্বয় করা হয়।
browser.cookies API প্রতিটি API মেথডের সাথে ব্যবহার করার জন্য পার্টিশন কী-এর উপর নিয়ন্ত্রণ প্রদান করে। আরও তথ্যের জন্য, API রেফারেন্স দেখুন।
একটি সাধারণ ওয়েবসাইটের মতোই এক্সটেনশনগুলো কুকি সংরক্ষণ করতে এবং ওয়েব স্টোরেজ এপিআই অ্যাক্সেস করতে পারে। তবে, কিছু ক্ষেত্রে এক্সটেনশনগুলোতে এগুলোর আচরণ ভিন্ন হয়।
এক্সটেনশন এপিআই সম্পর্কে তথ্যের জন্য browser.storage দেখুন।
স্টোরেজ
এক্সটেনশনগুলিতে প্রায়শই ওয়েব প্ল্যাটফর্ম স্টোরেজ এপিআই ব্যবহার করা প্রয়োজন হয়। এই বিভাগে এক্সটেনশনের প্রেক্ষাপটে এই এপিআইগুলির আচরণ অন্বেষণ করা হয়েছে, যা কখনও কখনও ওয়েবে তাদের আচরণের থেকে ভিন্ন হতে পারে।
অধ্যবসায়
ব্যবহারকারী ব্রাউজিং ডেটা মুছে ফেললেও এক্সটেনশন স্টোরেজ পরিষ্কার হয় না। এটি ওয়েব স্টোরেজ এপিআই (যেমন লোকাল স্টোরেজ এবং ইনডেক্সডডিবি ) ব্যবহার করে সংরক্ষিত যেকোনো ডেটার ক্ষেত্রে প্রযোজ্য।
ডিফল্টরূপে, এক্সটেনশনগুলি স্টোরেজের উপর সাধারণ কোটা সীমাবদ্ধতার অধীন, যা navigator.storage.estimate() কল করে পরীক্ষা করা যেতে পারে। অতিরিক্ত মেমোরি চাপের কারণে স্টোরেজ খালিও হয়ে যেতে পারে, যদিও এটি বিরল। এটি এড়াতে:
-
"unlimitedStorage"পারমিশনটির জন্য অনুরোধ করুন, যা এক্সটেনশন এবং ওয়েব স্টোরেজ এপিআই উভয়কেই প্রভাবিত করে এবং এক্সটেনশনগুলিকে কোটা সীমাবদ্ধতা ও উচ্ছেদ উভয় থেকেই অব্যাহতি দেয়। - উচ্ছেদ থেকে সুরক্ষার জন্য
navigator.storage.persist()কল করুন।
এক্সটেনশন স্টোরেজটি এক্সটেনশনের অরিজিন জুড়ে শেয়ার করা হয়, যার মধ্যে রয়েছে এক্সটেনশন সার্ভিস ওয়ার্কার, যেকোনো এক্সটেনশন পেজ (পপআপ এবং সাইড প্যানেল সহ), এবং অফস্ক্রিন ডকুমেন্ট। কন্টেন্ট স্ক্রিপ্টে, ওয়েব স্টোরেজ এপিআই কল করলে এক্সটেনশন থেকে নয়, বরং সেই হোস্ট পেজ থেকে ডেটা অ্যাক্সেস করা হয় যেখানে কন্টেন্ট স্ক্রিপ্টটি ইনজেক্ট করা হয়েছে।
পরিষেবা কর্মীদের প্রবেশাধিকার
সার্ভিস ওয়ার্কারগুলিতে IndexedDB এবং Cache Storage API-গুলি ব্যবহার করা যায়। তবে, Local Storage এবং Session Storage ব্যবহার করা যায় না।
সার্ভিস ওয়ার্কার থেকে লোকাল স্টোরেজ বা সেশন স্টোরেজ অ্যাক্সেস করার প্রয়োজন হলে, একটি অফস্ক্রিন ডকুমেন্ট ব্যবহার করুন।
বিভাজন
পার্টিশনিং হলো সংরক্ষিত ডেটার জন্য কী (key) ব্যবহার করে সেটির অ্যাক্সেস সীমিত করার একটি প্রক্রিয়া। ঐতিহাসিকভাবে, স্টোরেজকে তার উৎস অনুসারে কী-যুক্ত করা হতো।
ক্রোম ১১৫ থেকে, নির্দিষ্ট ধরণের ক্রস-সাইট ট্র্যাকিং প্রতিরোধ করার জন্য স্টোরেজ পার্টিশনিং কী-এর সংজ্ঞায় পরিবর্তন আনা হয়েছে। এর বাস্তব অর্থ হলো, যদি সাইট A, সাইট B-কে ধারণকারী একটি আইফ্রেম এমবেড করে, তবে সাইট B সেই একই স্টোরেজ অ্যাক্সেস করতে পারবে না যা সে সাধারণত সরাসরি নেভিগেট করলে পেত।
মেয়াদ বৃদ্ধির ক্ষেত্রে এর প্রভাব প্রশমিত করার জন্য দুটি ছাড় প্রযোজ্য:
- যদি
chrome-extension://স্কিমযুক্ত কোনো পৃষ্ঠা কোনো সাইটে এমবেড করা হয়, তাহলে স্টোরেজ পার্টিশনিং প্রযোজ্য হবে না এবং এক্সটেনশনটি তার শীর্ষ-স্তরের পার্টিশনে প্রবেশাধিকার পাবে। - যদি
chrome-extension://স্কিমযুক্ত কোনো পৃষ্ঠায় একটি আইফ্রেম অন্তর্ভুক্ত থাকে, এবং এক্সটেনশনটির যে সাইটটি এমবেড করা হচ্ছে তার জন্য হোস্ট পারমিশন থাকে, তাহলে সেই সাইটটিও এর টপ-লেভেল পার্টিশনে অ্যাক্সেস পাবে।
কুকি
কুকি একটি নির্দিষ্ট ডোমেইন এবং পাথের সাথে যুক্ত কী-ভ্যালু পেয়ার সংরক্ষণ করার একটি উপায় প্রদান করে। এক্সটেনশনের ক্ষেত্রে এগুলোর উপযোগিতা সীমিত, কিন্তু আপনার যদি কোনো নির্দিষ্ট ব্যবহারের ক্ষেত্র থাকে অথবা আপনি যদি এমন কোনো থার্ড-পার্টি স্ক্রিপ্ট যুক্ত করে থাকেন যা তার বাস্তবায়নে কুকি ব্যবহার করে, তবে এগুলোর আচরণ বোঝা সহায়ক হতে পারে।
নিরাপদ কুকি
Secure cookie attribute শুধুমাত্র https:// স্কিমের জন্য সমর্থিত। ফলস্বরূপ, chrome-extension:// পেজগুলো এই অ্যাট্রিবিউট ব্যবহার করে কুকি সেট করতে পারে না।
এর মানে এও যে, যেখানে Secure অ্যাট্রিবিউটটি আবশ্যক, সেখানে এক্সটেনশন পেজগুলো অন্য কোনো কুকি অ্যাট্রিবিউট ব্যবহার করতে পারবে না:
পার্টিশনিং এবং সেমসাইট আচরণ
chrome-extension:// পেজগুলিতে সেট করা কুকিগুলি সর্বদা SameSite=Lax ব্যবহার করে। ফলস্বরূপ, কোনো এক্সটেনশন দ্বারা তার নিজস্ব অরিজিনে সেট করা কুকিগুলি ফ্রেমে কখনও অ্যাক্সেস করা যায় না এবং পার্টিশনিং প্রাসঙ্গিক হয় না।
তৃতীয় পক্ষের সাইটের সাথে যুক্ত কুকিগুলির ক্ষেত্রে, যেমন কোনো এক্সটেনশন পেজের ফ্রেমে লোড হওয়া তৃতীয় পক্ষের সাইট, অথবা কোনো এক্সটেনশন পেজ থেকে তৃতীয় পক্ষের অরিজিনে করা অনুরোধের ক্ষেত্রে, কুকিগুলি দুটি বিষয় ছাড়া ওয়েবের মতোই আচরণ করে:
- যদি কোনো নির্দিষ্ট ট্যাবের শীর্ষ-স্তরের পৃষ্ঠাটি একটি
chrome-extension://পৃষ্ঠা হয়, তাহলে সাবফ্রেমেও তৃতীয়-পক্ষের কুকি কখনও ব্লক করা হয় না। - কোনো এক্সটেনশন থেকে তৃতীয় পক্ষের কাছে করা অনুরোধগুলোকে সেম-সাইট (same-site) হিসেবে গণ্য করা হয়, যদি এক্সটেনশনটির সেই তৃতীয় পক্ষের জন্য হোস্ট পারমিশন থাকে। এর মানে হলো
SameSite=Strictকুকি পাঠানো যেতে পারে। উল্লেখ্য যে, এটি শুধুমাত্র নেটওয়ার্ক অনুরোধের ক্ষেত্রে প্রযোজ্য, জাভাস্ক্রিপ্টেdocument.cookieএর মাধ্যমে অ্যাক্সেসের ক্ষেত্রে নয়, এবং তৃতীয় পক্ষের কুকি ব্লক করা থাকলে এটি প্রযোজ্য হয় না।
উল্লেখ্য যে, থার্ড-পার্টি কুকি সংক্রান্ত সেটিংস প্রাইভেসি স্যান্ডবক্সের কাজ দ্বারা প্রভাবিত হয় এবং এর সময়সীমা অনুযায়ী তা সমন্বয় করা হয়।
browser.cookies API প্রতিটি API মেথডের সাথে ব্যবহার করার জন্য পার্টিশন কী-এর উপর নিয়ন্ত্রণ প্রদান করে। আরও তথ্যের জন্য, API রেফারেন্স দেখুন।
একটি সাধারণ ওয়েবসাইটের মতোই এক্সটেনশনগুলো কুকি সংরক্ষণ করতে এবং ওয়েব স্টোরেজ এপিআই অ্যাক্সেস করতে পারে। তবে, কিছু ক্ষেত্রে এক্সটেনশনগুলোতে এগুলোর আচরণ ভিন্ন হয়।
এক্সটেনশন এপিআই সম্পর্কে তথ্যের জন্য browser.storage দেখুন।
স্টোরেজ
এক্সটেনশনগুলিতে প্রায়শই ওয়েব প্ল্যাটফর্ম স্টোরেজ এপিআই ব্যবহার করা প্রয়োজন হয়। এই বিভাগে এক্সটেনশনের প্রেক্ষাপটে এই এপিআইগুলির আচরণ অন্বেষণ করা হয়েছে, যা কখনও কখনও ওয়েবে তাদের আচরণের থেকে ভিন্ন হতে পারে।
অধ্যবসায়
ব্যবহারকারী ব্রাউজিং ডেটা মুছে ফেললেও এক্সটেনশন স্টোরেজ পরিষ্কার হয় না। এটি ওয়েব স্টোরেজ এপিআই (যেমন লোকাল স্টোরেজ এবং ইনডেক্সডডিবি ) ব্যবহার করে সংরক্ষিত যেকোনো ডেটার ক্ষেত্রে প্রযোজ্য।
ডিফল্টরূপে, এক্সটেনশনগুলি স্টোরেজের উপর সাধারণ কোটা সীমাবদ্ধতার অধীন, যা navigator.storage.estimate() কল করে পরীক্ষা করা যেতে পারে। অতিরিক্ত মেমোরি চাপের কারণে স্টোরেজ খালিও হয়ে যেতে পারে, যদিও এটি বিরল। এটি এড়াতে:
-
"unlimitedStorage"পারমিশনটির জন্য অনুরোধ করুন, যা এক্সটেনশন এবং ওয়েব স্টোরেজ এপিআই উভয়কেই প্রভাবিত করে এবং এক্সটেনশনগুলিকে কোটা সীমাবদ্ধতা ও উচ্ছেদ উভয় থেকেই অব্যাহতি দেয়। - উচ্ছেদ থেকে সুরক্ষার জন্য
navigator.storage.persist()কল করুন।
এক্সটেনশন স্টোরেজটি এক্সটেনশনের অরিজিন জুড়ে শেয়ার করা হয়, যার মধ্যে রয়েছে এক্সটেনশন সার্ভিস ওয়ার্কার, যেকোনো এক্সটেনশন পেজ (পপআপ এবং সাইড প্যানেল সহ), এবং অফস্ক্রিন ডকুমেন্ট। কন্টেন্ট স্ক্রিপ্টে, ওয়েব স্টোরেজ এপিআই কল করলে এক্সটেনশন থেকে নয়, বরং সেই হোস্ট পেজ থেকে ডেটা অ্যাক্সেস করা হয় যেখানে কন্টেন্ট স্ক্রিপ্টটি ইনজেক্ট করা হয়েছে।
পরিষেবা কর্মীদের প্রবেশাধিকার
সার্ভিস ওয়ার্কারগুলিতে IndexedDB এবং Cache Storage API-গুলি ব্যবহার করা যায়। তবে, Local Storage এবং Session Storage ব্যবহার করা যায় না।
সার্ভিস ওয়ার্কার থেকে লোকাল স্টোরেজ বা সেশন স্টোরেজ অ্যাক্সেস করার প্রয়োজন হলে, একটি অফস্ক্রিন ডকুমেন্ট ব্যবহার করুন।
বিভাজন
পার্টিশনিং হলো সংরক্ষিত ডেটার জন্য কী (key) ব্যবহার করে সেটির অ্যাক্সেস সীমিত করার একটি প্রক্রিয়া। ঐতিহাসিকভাবে, স্টোরেজকে তার উৎস অনুসারে কী-যুক্ত করা হতো।
ক্রোম ১১৫ থেকে, নির্দিষ্ট ধরণের ক্রস-সাইট ট্র্যাকিং প্রতিরোধ করার জন্য স্টোরেজ পার্টিশনিং কী-এর সংজ্ঞায় পরিবর্তন আনা হয়েছে। এর বাস্তব অর্থ হলো, যদি সাইট A, সাইট B-কে ধারণকারী একটি আইফ্রেম এমবেড করে, তবে সাইট B সেই একই স্টোরেজ অ্যাক্সেস করতে পারবে না যা সে সাধারণত সরাসরি নেভিগেট করলে পেত।
মেয়াদ বৃদ্ধির ক্ষেত্রে এর প্রভাব প্রশমিত করার জন্য দুটি ছাড় প্রযোজ্য:
- যদি
chrome-extension://স্কিমযুক্ত কোনো পৃষ্ঠা কোনো সাইটে এমবেড করা হয়, তাহলে স্টোরেজ পার্টিশনিং প্রযোজ্য হবে না এবং এক্সটেনশনটি তার শীর্ষ-স্তরের পার্টিশনে প্রবেশাধিকার পাবে। - যদি
chrome-extension://স্কিমযুক্ত কোনো পৃষ্ঠায় একটি আইফ্রেম অন্তর্ভুক্ত থাকে, এবং এক্সটেনশনটির যে সাইটটি এমবেড করা হচ্ছে তার জন্য হোস্ট পারমিশন থাকে, তাহলে সেই সাইটটিও এর টপ-লেভেল পার্টিশনে অ্যাক্সেস পাবে।
কুকি
কুকি একটি নির্দিষ্ট ডোমেইন এবং পাথের সাথে যুক্ত কী-ভ্যালু পেয়ার সংরক্ষণ করার একটি উপায় প্রদান করে। এক্সটেনশনের ক্ষেত্রে এগুলোর উপযোগিতা সীমিত, কিন্তু আপনার যদি কোনো নির্দিষ্ট ব্যবহারের ক্ষেত্র থাকে অথবা আপনি যদি এমন কোনো থার্ড-পার্টি স্ক্রিপ্ট যুক্ত করে থাকেন যা তার বাস্তবায়নে কুকি ব্যবহার করে, তবে এগুলোর আচরণ বোঝা সহায়ক হতে পারে।
নিরাপদ কুকি
Secure cookie attribute শুধুমাত্র https:// স্কিমের জন্য সমর্থিত। ফলস্বরূপ, chrome-extension:// পেজগুলো এই অ্যাট্রিবিউট ব্যবহার করে কুকি সেট করতে পারে না।
এর মানে এও যে, যেখানে Secure অ্যাট্রিবিউটটি আবশ্যক, সেখানে এক্সটেনশন পেজগুলো অন্য কোনো কুকি অ্যাট্রিবিউট ব্যবহার করতে পারবে না:
পার্টিশনিং এবং সেমসাইট আচরণ
chrome-extension:// পেজগুলিতে সেট করা কুকিগুলি সর্বদা SameSite=Lax ব্যবহার করে। ফলস্বরূপ, কোনো এক্সটেনশন দ্বারা তার নিজস্ব অরিজিনে সেট করা কুকিগুলি ফ্রেমে কখনও অ্যাক্সেস করা যায় না এবং পার্টিশনিং প্রাসঙ্গিক হয় না।
তৃতীয় পক্ষের সাইটের সাথে যুক্ত কুকিগুলির ক্ষেত্রে, যেমন কোনো এক্সটেনশন পেজের ফ্রেমে লোড হওয়া তৃতীয় পক্ষের সাইট, অথবা কোনো এক্সটেনশন পেজ থেকে তৃতীয় পক্ষের অরিজিনে করা অনুরোধের ক্ষেত্রে, কুকিগুলি দুটি বিষয় ছাড়া ওয়েবের মতোই আচরণ করে:
- যদি কোনো নির্দিষ্ট ট্যাবের শীর্ষ-স্তরের পৃষ্ঠাটি একটি
chrome-extension://পৃষ্ঠা হয়, তাহলে সাবফ্রেমেও তৃতীয়-পক্ষের কুকি কখনও ব্লক করা হয় না। - কোনো এক্সটেনশন থেকে তৃতীয় পক্ষের কাছে করা অনুরোধগুলোকে সেম-সাইট (same-site) হিসেবে গণ্য করা হয়, যদি এক্সটেনশনটির সেই তৃতীয় পক্ষের জন্য হোস্ট পারমিশন থাকে। এর মানে হলো
SameSite=Strictকুকি পাঠানো যেতে পারে। উল্লেখ্য যে, এটি শুধুমাত্র নেটওয়ার্ক অনুরোধের ক্ষেত্রে প্রযোজ্য, জাভাস্ক্রিপ্টেdocument.cookieএর মাধ্যমে অ্যাক্সেসের ক্ষেত্রে নয়, এবং তৃতীয় পক্ষের কুকি ব্লক করা থাকলে এটি প্রযোজ্য হয় না।
উল্লেখ্য যে, থার্ড-পার্টি কুকি সংক্রান্ত সেটিংস প্রাইভেসি স্যান্ডবক্সের কাজ দ্বারা প্রভাবিত হয় এবং এর সময়সীমা অনুযায়ী তা সমন্বয় করা হয়।
browser.cookies API প্রতিটি API মেথডের সাথে ব্যবহার করার জন্য পার্টিশন কী-এর উপর নিয়ন্ত্রণ প্রদান করে। আরও তথ্যের জন্য, API রেফারেন্স দেখুন।