স্বাধীন বিভাজিত রাজ্য (CHIPS) থাকার কুকিজ

শীর্ষ-স্তরের সাইট প্রতি একটি পৃথক কুকি জার সহ বিকাশকারীদের "পার্টিশন করা" স্টোরেজে একটি কুকি বেছে নেওয়ার অনুমতি দিন৷

বাস্তবায়নের অবস্থা

ব্রাউজার সমর্থন

  • ক্রোম: 114।
  • প্রান্ত: 114।
  • ফায়ারফক্স: 131।
  • সাফারি: সমর্থিত নয়।

উৎস

চিপস কি?

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

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

চিপস, স্টোরেজ অ্যাক্সেস এপিআই , এবং সম্পর্কিত ওয়েবসাইট সেটগুলি ক্রস-সাইট প্রসঙ্গ থেকে কুকিজ পড়ার এবং লেখার একমাত্র উপায়, যেমন iframes, যখন তৃতীয় পক্ষের কুকিগুলি ব্লক করা হয়৷

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

শীর্ষ-স্তরের প্রসঙ্গ দ্বারা বিভাজিত ক্রস-সাইট কুকিগুলিকে সমর্থন করার জন্য CHIPS একটি নতুন কুকি বৈশিষ্ট্য, Partitioned প্রবর্তন করে।

সেট-কুকি হেডার:

Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;

জাভাস্ক্রিপ্ট:

document.cookie="__Host-name=value; Secure; Path=/; SameSite=None; Partitioned;"

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

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

পার্টিশন করা কুকির সাহায্যে, যখন একজন ব্যবহারকারী সাইট A পরিদর্শন করে এবং সাইট C থেকে এম্বেড করা বিষয়বস্তু পার্টিশনড অ্যাট্রিবিউট সহ একটি কুকি সেট করে, তখন কুকি একটি পার্টিশন করা জারে সংরক্ষিত হয় যা শুধুমাত্র কুকিজের জন্য নির্ধারিত হয় যেটি সাইট A এ এমবেড করার সময় সাইট C সেট করে। ব্রাউজার যখন শীর্ষ-স্তরের সাইট A হয় শুধুমাত্র তখনই সেই কুকি পাঠাবে।

ব্যবহারকারী যখন একটি নতুন সাইট ভিজিট করেন, উদাহরণস্বরূপ সাইট B, একটি এম্বেড করা C ফ্রেম সেই কুকিটি পাবে না যা C সাইট A-তে এম্বেড করার সময় সেট করা হয়েছিল।

যদি একজন ব্যবহারকারী একটি শীর্ষ স্তরের ওয়েবসাইট হিসাবে সাইট C পরিদর্শন করেন, A এ এমবেড করার সময় C সেট করা পার্টিশন করা কুকিও সেই অনুরোধে পাঠানো হবে না।

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

কেস ব্যবহার করুন

উদাহরণস্বরূপ, retail.example সাইটটি তার সাইটে একটি সমর্থন চ্যাট বক্স এম্বেড করার জন্য একটি তৃতীয়-পক্ষ পরিষেবা support.chat.example এর সাথে কাজ করতে চাইতে পারে৷ অনেক এম্বেডযোগ্য চ্যাট পরিষেবা আজ রাষ্ট্র বাঁচাতে কুকিজের উপর নির্ভর করে।

এম্বেড করা চ্যাট উইজেট সহ একটি ওয়েব সাইট দেখানো ডায়াগ্রাম
শীর্ষ-স্তরের সাইট retail.example এম্বেড করা একটি তৃতীয় পক্ষের পরিষেবা support.chat.example

একটি ক্রস-সাইট কুকি সেট করার ক্ষমতা ছাড়া, support.chat.example বিকল্প, প্রায়শই আরও জটিল, স্টেট স্টোর করার পদ্ধতি খুঁজে বের করতে হবে। বিকল্পভাবে, এটিকে শীর্ষ-স্তরের পৃষ্ঠায় এম্বেড করা দরকার যা ঝুঁকির পরিচয় দেয় কারণ এটি support.chat.example স্ক্রিপ্টকে retail.example-এ উন্নত বিশেষাধিকার পেতে দেয়, যেমন প্রমাণীকরণ কুকি অ্যাক্সেস করার ক্ষমতা।

CHIPS অ-বিভাগহীন কুকির সাথে যুক্ত ঝুঁকি ছাড়াই ক্রস-সাইট কুকিজ ব্যবহার চালিয়ে যাওয়ার জন্য একটি সহজ বিকল্প প্রদান করে।

CHIPS-এর উদাহরণ ব্যবহারের ক্ষেত্রে এমন কোনো পরিস্থিতি অন্তর্ভুক্ত যেখানে ক্রস-সাইট সাবরিসোর্সগুলির জন্য সেশন বা স্থায়ী অবস্থার কিছু ধারণা প্রয়োজন যা একটি একক শীর্ষ-স্তরের সাইটে ব্যবহারকারীর কার্যকলাপের জন্য স্কোপ করা হয়, যেমন:

  • তৃতীয় পক্ষের চ্যাট এম্বেড
  • তৃতীয় পক্ষের মানচিত্র এম্বেড
  • তৃতীয় পক্ষের পেমেন্ট এম্বেড
  • Subresource CDN লোড ব্যালেন্সিং
  • মাথাবিহীন CMS প্রদানকারী
  • অবিশ্বস্ত ব্যবহারকারী সামগ্রী (যেমন googleusercontent.com এবং githubusercontent.com) পরিবেশনের জন্য স্যান্ডবক্স ডোমেন
  • তৃতীয় পক্ষের CDN যেগুলি প্রথম-পক্ষের সাইটে প্রমাণীকরণের স্থিতি দ্বারা অ্যাক্সেস-নিয়ন্ত্রিত সামগ্রী পরিবেশন করতে কুকিজ ব্যবহার করে (উদাহরণস্বরূপ, তৃতীয় পক্ষের CDN-এ হোস্ট করা সোশ্যাল মিডিয়া সাইটে প্রোফাইল ছবি)
  • ফ্রন্ট-এন্ড ফ্রেমওয়ার্ক যা তাদের অনুরোধে কুকি ব্যবহার করে দূরবর্তী API-এর উপর নির্ভর করে
  • এমবেড করা বিজ্ঞাপন যেগুলির জন্য প্রকাশক প্রতি রাজ্যের সুযোগ প্রয়োজন (উদাহরণস্বরূপ, সেই ওয়েবসাইটের জন্য ব্যবহারকারীদের বিজ্ঞাপনের পছন্দগুলি ক্যাপচার করা)

কেন চিপস একটি অপ্ট-ইন পার্টিশনিং মডেল ব্যবহার করে

যেখানে বিভাজনবিহীন তৃতীয় পক্ষের কুকিজ অ্যাক্সেস ব্লক করা হয়েছে, সেখানে পার্টিশন করার জন্য কয়েকটি অন্যান্য পদ্ধতির চেষ্টা করা হয়েছে।

ফায়ারফক্স ঘোষণা করেছে যে তারা তাদের ETP স্ট্রিক্ট মোড এবং প্রাইভেট ব্রাউজিং মোডে ডিফল্টরূপে সমস্ত তৃতীয়-পক্ষ কুকিকে বিভাজন করছে, তাই সমস্ত ক্রস-সাইট কুকি শীর্ষ-স্তরের সাইট দ্বারা বিভক্ত করা হয়েছে। যাইহোক, তৃতীয় পক্ষের অপ্ট-ইন ছাড়া কুকি পার্টিশন করা অপ্রত্যাশিত বাগগুলির দিকে পরিচালিত করতে পারে, যেহেতু কিছু তৃতীয়-পক্ষ পরিষেবা সার্ভার তৈরি করেছে যা একটি অ-বিভাজন তৃতীয়-পক্ষ কুকির আশা করে৷

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

বিভাজিত কুকির বিদ্যমান বাস্তবায়ন থেকে CHIPS কে আলাদা করে তা হল তৃতীয় পক্ষের অপ্ট-ইন। একবার (বিভাজনবিহীন) তৃতীয় পক্ষের কুকি অপ্রচলিত হয়ে গেলে ক্রস-পার্টি অনুরোধে পাঠানোর জন্য কুকিগুলিকে অবশ্যই একটি নতুন বৈশিষ্ট্যের সাথে সেট করতে হবে।

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

আজ, কুকিগুলিকে সেই সাইটের হোস্টনাম বা ডোমেনে কী করা হয় যা তাদের সেট করে, অর্থাৎ তাদের হোস্ট কী

উদাহরণস্বরূপ, https://support.chat.example থেকে কুকিজের জন্য হোস্ট কী হল ("support.chat.example")

CHIPS-এর অধীনে, যে কুকিগুলি পার্টিশন করার বিকল্প বেছে নেয় তাদের হোস্ট কী এবং পার্টিশন কী- তে ডাবল-কি করা হবে।

একটি কুকির পার্টিশন কী হল শীর্ষ-স্তরের ইউআরএলের সাইট ( স্কিম এবং রেজিস্ট্রেবল ডোমেন ) যা ব্রাউজারটি কুকি সেট করার শেষ পয়েন্টে অনুরোধের শুরুতে ভিজিট করেছিল।

আগের উদাহরণে, যেখানে https://support.chat.example এম্বেড করা হয়েছে https://retail.example , সেখানে শীর্ষ-স্তরের URL হল https://retail.example

সেই ক্ষেত্রে পার্টিশন কী হল ("https", "retail.example")

অনুরূপভাবে, একটি অনুরোধের পার্টিশন কী হল শীর্ষ-স্তরের URL এর সাইট যা ব্রাউজার একটি অনুরোধের শুরুতে পরিদর্শন করে। ব্রাউজারগুলিকে অবশ্যই সেই কুকির মতো একই পার্টিশন কী সহ অনুরোধে Partitioned বৈশিষ্ট্য সহ একটি কুকি পাঠাতে হবে।

আগে উদাহরণে কুকি কী চিপসের আগে এবং পরে কেমন দেখায় তা এখানে।

সাইট A এবং এম্বেড করা সাইট C একটি বিভাজিত কুকি ভাগ করে। এমবেড করা না হলে, সাইট সি পার্টিশন করা কুকি অ্যাক্সেস করতে পারে না।
সাইট A এবং এম্বেড করা সাইট C একটি বিভাজিত কুকি ভাগ করে। এমবেড করা না হলে, সাইট সি পার্টিশন করা কুকি অ্যাক্সেস করতে পারে না।

চিপসের আগে

key=("support.chat.example")

চিপসের পরে

key={("support.chat.example"),("https", "retail.example")}

নিরাপত্তা নকশা

ভাল নিরাপত্তা অনুশীলন উত্সাহিত করার জন্য, CHIPS এর সাথে, কুকিগুলি শুধুমাত্র নিরাপদ প্রোটোকল দ্বারা সেট করা হয় এবং পাঠানো হয়।

  • পার্টিশন করা কুকিজ অবশ্যই Secure দিয়ে সেট করতে হবে।
  • বিভাজনকৃত কুকিগুলিকে হোস্টনামের সাথে আবদ্ধ করার জন্য সেট করার সময় __Host- উপসর্গ ব্যবহার করার পরামর্শ দেওয়া হয় (এবং নিবন্ধনযোগ্য ডোমেন নয়)।

উদাহরণ:

Set-Cookie: __Host-example=34d8g; SameSite=None; Secure; Path=/; Partitioned;

চিপসের বিকল্প

স্টোরেজ অ্যাক্সেস এপিআই এবং সংশ্লিষ্ট রিলেটেড ওয়েবসাইট সেট (RWS) হল ওয়েব প্ল্যাটফর্ম মেকানিজম যা নির্দিষ্ট, ব্যবহারকারী-মুখী উদ্দেশ্যে সীমিত ক্রস-সাইট কুকি অ্যাক্সেস সক্ষম করে।

এগুলি চিপস পার্টিশনের বিকল্প যেখানে ক্রস-সাইট, বিভাজনবিহীন কুকগুলিতে অ্যাক্সেস প্রয়োজন।

এমন পরিস্থিতিতে স্টোরেজ অ্যাক্সেস API এবং সম্পর্কিত ওয়েবসাইট সেটগুলি বিবেচনা করুন যেখানে একাধিক সম্পর্কিত সাইটে এমবেড করা পরিষেবার জন্য আপনার একই কুকির প্রয়োজন হয়৷

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

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

ডেমো

এই ডেমো আপনাকে পার্টিশন করা কুকিজ কিভাবে কাজ করে এবং আপনি কিভাবে DevTools-এ সেগুলি পরিদর্শন করতে পারেন তার মধ্যে নিয়ে যাবে।

সাইট A সাইট B থেকে একটি আইফ্রেম এম্বেড করে যা দুটি কুকি সেট করতে জাভাস্ক্রিপ্ট ব্যবহার করে: একটি বিভাজিত এবং বিভাজিত কুকি। সাইট B document.cookie ব্যবহার করে সেই অবস্থান থেকে অ্যাক্সেসযোগ্য সমস্ত কুকি প্রদর্শন করে৷

যখন তৃতীয় পক্ষের কুকি ব্লক করা হয়, সাইট B শুধুমাত্র ক্রস-সাইট প্রসঙ্গে Partitioned বৈশিষ্ট্য সহ কুকি সেট করতে এবং অ্যাক্সেস করতে সক্ষম হবে।

যখন তৃতীয় পক্ষের কুকির অনুমতি দেওয়া হয়, তখন সাইট B বিভাজনবিহীন কুকি সেট এবং অ্যাক্সেস করতে সক্ষম হয়।

সাইট A এবং সাইট B
বাম: তৃতীয় পক্ষের কুকি ব্লক করা হয়েছে। ডানদিকে: তৃতীয় পক্ষের কুকিজ অনুমোদিত।

পূর্বশর্ত

  1. Chrome 118 বা উচ্চতর।
  2. chrome://flags/#test-third-party-cookie-phaseout এ যান এবং এই সেটিংটি সক্ষম করুন

পার্টিশন করা কুকি পরীক্ষা করতে DevTools ব্যবহার করুন

  1. https://chips-site-a.glitch.me দেখুন।
  2. DevTools খুলতে Control+Shift+J (বা Mac-এ Command+Option+J ) টিপুন।
  3. অ্যাপ্লিকেশন ট্যাবে ক্লিক করুন।
  4. অ্যাপ্লিকেশন > স্টোরেজ > কুকিজে নেভিগেট করুন।
  5. https://chips-site-b.glitch.me ক্লিক করুন।

DevTools নির্বাচিত মূল থেকে সমস্ত কুকি প্রদর্শন করবে।

DevTools অ্যাপ্লিকেশন ট্যাবে সাইট B থেকে কুকিজ।

সাইট B শুধুমাত্র ক্রস-সাইট প্রসঙ্গে পার্টিশন করা কুকি সেট করতে পারে, পার্টিশন না করা কুকি ব্লক করা হবে:

  • আপনি শীর্ষ স্তরের সাইট https://chips-site-a.glitch.me এর পার্টিশন কী সহ __Host-partitioned-cookie দেখতে পাবেন।
__Host-partitioned-cookie-এর জন্য পার্টিশন কী।
  1. সাইট বি-তে যান ক্লিক করুন।
  2. DevTools-এ, অ্যাপ্লিকেশন > স্টোরেজ > কুকিজে নেভিগেট করুন।
  3. https://chips-site-b.glitch.me ক্লিক করুন।
সাইট বি
শীর্ষ-স্তরে, সাইট B সমস্ত কুকি দেখতে পারে - বিভাজিত এবং বিভাজিত নয়

এই পরিস্থিতিতে, যেহেতু আপনি শীর্ষ-স্তরের প্রেক্ষাপটে B সাইটে আছেন, এটি উভয় কুকি সেট এবং অ্যাক্সেস করতে পারে:

  • unpartitioned-cookie একটি খালি পার্টিশন কী আছে।
  • __Host-partitioned-cookie কুকিতে পার্টিশন কী আছে https://chips-site-b.glitch.me
একটি শীর্ষ-স্তরের সাইট হিসাবে B পরিদর্শন করার সময় DevTools অ্যাপ্লিকেশন ট্যাবে সাইট B থেকে কুকিজ। __Host-partitioned-cookie-এ পার্টিশন কী আছে https://chips-site-b.glitch.me।

আপনি যদি সাইট A-তে ফিরে যান, unpartitioned-cookie এখন ব্রাউজারে সংরক্ষণ করা হয়, তবে এটি সাইট A থেকে অ্যাক্সেসযোগ্য হবে না।

  1. সাইট A এ যান ক্লিক করুন।
  2. নেটওয়ার্ক ট্যাবে ক্লিক করুন।
  3. https://chips-site-b.glitch.me ক্লিক করুন।
  4. কুকিজ ট্যাবে ক্লিক করুন।

সাইট A-তে থাকাকালীন, আপনি শীর্ষ স্তরের সাইট https://chips-site-a.glitch.me এর পার্টিশন কী সহ __Host-partitioned-cookie দেখতে পাবেন।

নেটওয়ার্ক ট্যাব সাইট B iframe থেকে কুকিজ দেখায় যা সাইট A এ এমবেড করার সময় অ্যাক্সেসযোগ্য।

আপনি যদি ফিল্টার করা কুকিজ অনুরোধ চেক করেন তাহলে DevTools দেখাবে যে পার্টিশন না করা কুকি ব্লক করা হয়েছে, একটি টুলটিপ সহ হলুদ রঙে হাইলাইট করা হয়েছে: "এই কুকিটি ব্যবহারকারীর পছন্দের কারণে ব্লক করা হয়েছে"

নেটওয়ার্ক ট্যাব সাইট B iframe থেকে ব্লক করা কুকি দেখাচ্ছে।

অ্যাপ্লিকেশন > স্টোরেজ > কুকিতে https://chips-site-b.glitch.me ক্লিক করলে দেখাবে:

  • খালি পার্টিশন কী সহ unpartitioned-cookie
  • __Host-partitioned-cookie কুকি পার্টিশন কী সহ https://chips-site-a.glitch.me
DevTools অ্যাপ্লিকেশন ট্যাবে সাইট B থেকে কুকিজ। __Host-partitioned-cookie কুকিতে পার্টিশন কী আছে https://chips-site-a.glitch.meunpartitioned-cookie দেখানো হয়েছে, কিন্তু সাইট B iframe-এ এটি অ্যাক্সেসযোগ্য নয় যখন এটি সাইট A এ এম্বেড করা থাকে।

কুকিজ সাফ করুন

ডেমো রিসেট করতে, সাইটের জন্য সমস্ত কুকি সাফ করুন:

  • DevTools খুলতে Control+Shift+J (বা Mac-এ Command+Option+J ) টিপুন।
  • অ্যাপ্লিকেশন ট্যাবে ক্লিক করুন।
  • অ্যাপ্লিকেশন > স্টোরেজ > কুকিজে নেভিগেট করুন।
  • https://chips-site-b.glitch.me এ রাইট-ক্লিক করুন।
  • সাফ ক্লিক করুন.

সম্পদ

,

শীর্ষ-স্তরের সাইট প্রতি একটি পৃথক কুকি জার সহ বিকাশকারীদের "পার্টিশন করা" স্টোরেজে একটি কুকি বেছে নেওয়ার অনুমতি দিন৷

বাস্তবায়নের অবস্থা

ব্রাউজার সমর্থন

  • ক্রোম: 114।
  • প্রান্ত: 114।
  • ফায়ারফক্স: 131।
  • সাফারি: সমর্থিত নয়।

উৎস

চিপস কি?

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

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

চিপস, স্টোরেজ অ্যাক্সেস এপিআই , এবং সম্পর্কিত ওয়েবসাইট সেটগুলি ক্রস-সাইট প্রসঙ্গ থেকে কুকিজ পড়ার এবং লেখার একমাত্র উপায়, যেমন iframes, যখন তৃতীয় পক্ষের কুকিগুলি ব্লক করা হয়৷

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

শীর্ষ-স্তরের প্রসঙ্গ দ্বারা বিভাজিত ক্রস-সাইট কুকিগুলিকে সমর্থন করার জন্য CHIPS একটি নতুন কুকি বৈশিষ্ট্য, Partitioned প্রবর্তন করে।

সেট-কুকি হেডার:

Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;

জাভাস্ক্রিপ্ট:

document.cookie="__Host-name=value; Secure; Path=/; SameSite=None; Partitioned;"

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

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

পার্টিশন করা কুকির সাহায্যে, যখন একজন ব্যবহারকারী সাইট A পরিদর্শন করে এবং সাইট C থেকে এম্বেড করা বিষয়বস্তু পার্টিশনড অ্যাট্রিবিউট সহ একটি কুকি সেট করে, তখন কুকি একটি পার্টিশন করা জারে সংরক্ষিত হয় যা শুধুমাত্র কুকিজের জন্য নির্ধারিত হয় যেটি সাইট A এ এমবেড করার সময় সাইট C সেট করে। ব্রাউজার যখন শীর্ষ-স্তরের সাইট A হয় শুধুমাত্র তখনই সেই কুকি পাঠাবে।

ব্যবহারকারী যখন একটি নতুন সাইট ভিজিট করেন, উদাহরণস্বরূপ সাইট B, একটি এম্বেড করা C ফ্রেম সেই কুকিটি পাবে না যা C সাইট A-তে এম্বেড করার সময় সেট করা হয়েছিল।

যদি একজন ব্যবহারকারী একটি শীর্ষ স্তরের ওয়েবসাইট হিসাবে সাইট C পরিদর্শন করেন, A এ এমবেড করার সময় C সেট করা পার্টিশন করা কুকিও সেই অনুরোধে পাঠানো হবে না।

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

কেস ব্যবহার করুন

উদাহরণস্বরূপ, retail.example সাইটটি তার সাইটে একটি সমর্থন চ্যাট বক্স এম্বেড করার জন্য একটি তৃতীয়-পক্ষ পরিষেবা support.chat.example এর সাথে কাজ করতে চাইতে পারে৷ অনেক এম্বেডযোগ্য চ্যাট পরিষেবা আজ রাষ্ট্র বাঁচাতে কুকিজের উপর নির্ভর করে।

এম্বেড করা চ্যাট উইজেট সহ একটি ওয়েব সাইট দেখানো ডায়াগ্রাম
শীর্ষ-স্তরের সাইট retail.example এম্বেড করা একটি তৃতীয় পক্ষের পরিষেবা support.chat.example

একটি ক্রস-সাইট কুকি সেট করার ক্ষমতা ছাড়া, support.chat.example বিকল্প, প্রায়শই আরও জটিল, স্টেট স্টোর করার পদ্ধতি খুঁজে বের করতে হবে। বিকল্পভাবে, এটিকে শীর্ষ-স্তরের পৃষ্ঠায় এম্বেড করা দরকার যা ঝুঁকির পরিচয় দেয় কারণ এটি support.chat.example স্ক্রিপ্টকে retail.example-এ উন্নত বিশেষাধিকার পেতে দেয়, যেমন প্রমাণীকরণ কুকি অ্যাক্সেস করার ক্ষমতা।

CHIPS অ-বিভাগহীন কুকির সাথে যুক্ত ঝুঁকি ছাড়াই ক্রস-সাইট কুকিজ ব্যবহার চালিয়ে যাওয়ার জন্য একটি সহজ বিকল্প প্রদান করে।

CHIPS-এর উদাহরণ ব্যবহারের ক্ষেত্রে এমন কোনো পরিস্থিতি অন্তর্ভুক্ত যেখানে ক্রস-সাইট সাবরিসোর্সগুলির জন্য সেশন বা স্থায়ী অবস্থার কিছু ধারণা প্রয়োজন যা একটি একক শীর্ষ-স্তরের সাইটে ব্যবহারকারীর কার্যকলাপের জন্য স্কোপ করা হয়, যেমন:

  • তৃতীয় পক্ষের চ্যাট এম্বেড
  • তৃতীয় পক্ষের মানচিত্র এম্বেড
  • তৃতীয় পক্ষের পেমেন্ট এম্বেড
  • Subresource CDN লোড ব্যালেন্সিং
  • মাথাবিহীন CMS প্রদানকারী
  • অবিশ্বস্ত ব্যবহারকারী সামগ্রী (যেমন googleusercontent.com এবং githubusercontent.com) পরিবেশনের জন্য স্যান্ডবক্স ডোমেন
  • তৃতীয় পক্ষের CDN যেগুলি প্রথম-পক্ষের সাইটে প্রমাণীকরণের স্থিতি দ্বারা অ্যাক্সেস-নিয়ন্ত্রিত সামগ্রী পরিবেশন করতে কুকিজ ব্যবহার করে (উদাহরণস্বরূপ, তৃতীয় পক্ষের CDN-এ হোস্ট করা সোশ্যাল মিডিয়া সাইটে প্রোফাইল ছবি)
  • ফ্রন্ট-এন্ড ফ্রেমওয়ার্ক যা তাদের অনুরোধে কুকি ব্যবহার করে দূরবর্তী API-এর উপর নির্ভর করে
  • এমবেড করা বিজ্ঞাপন যেগুলির জন্য প্রকাশক প্রতি রাজ্যের সুযোগ প্রয়োজন (উদাহরণস্বরূপ, সেই ওয়েবসাইটের জন্য ব্যবহারকারীদের বিজ্ঞাপনের পছন্দগুলি ক্যাপচার করা)

কেন চিপস একটি অপ্ট-ইন পার্টিশনিং মডেল ব্যবহার করে

যেখানে বিভাজনবিহীন তৃতীয় পক্ষের কুকিজ অ্যাক্সেস ব্লক করা হয়েছে, সেখানে পার্টিশন করার জন্য কয়েকটি অন্যান্য পদ্ধতির চেষ্টা করা হয়েছে।

ফায়ারফক্স ঘোষণা করেছে যে তারা তাদের ETP স্ট্রিক্ট মোড এবং প্রাইভেট ব্রাউজিং মোডে ডিফল্টরূপে সমস্ত তৃতীয়-পক্ষ কুকিকে বিভাজন করছে, তাই সমস্ত ক্রস-সাইট কুকি শীর্ষ-স্তরের সাইট দ্বারা বিভক্ত করা হয়েছে। যাইহোক, তৃতীয় পক্ষের অপ্ট-ইন ছাড়া কুকি পার্টিশন করা অপ্রত্যাশিত বাগগুলির দিকে পরিচালিত করতে পারে, যেহেতু কিছু তৃতীয়-পক্ষ পরিষেবা সার্ভার তৈরি করেছে যা একটি অ-বিভাজন তৃতীয়-পক্ষ কুকির আশা করে৷

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

বিভাজিত কুকির বিদ্যমান বাস্তবায়ন থেকে CHIPS কে আলাদা করে তা হল তৃতীয় পক্ষের অপ্ট-ইন। একবার (বিভাজনবিহীন) তৃতীয় পক্ষের কুকি অপ্রচলিত হয়ে গেলে ক্রস-পার্টি অনুরোধে পাঠানোর জন্য কুকিগুলিকে অবশ্যই একটি নতুন বৈশিষ্ট্যের সাথে সেট করতে হবে।

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

আজ, কুকিগুলিকে সেই সাইটের হোস্টনাম বা ডোমেনে কী করা হয় যা তাদের সেট করে, অর্থাৎ তাদের হোস্ট কী

উদাহরণস্বরূপ, https://support.chat.example থেকে কুকিজের জন্য হোস্ট কী হল ("support.chat.example")

CHIPS-এর অধীনে, যে কুকিগুলি পার্টিশন করার বিকল্প বেছে নেয় তাদের হোস্ট কী এবং পার্টিশন কী- তে ডাবল-কি করা হবে।

একটি কুকির পার্টিশন কী হল শীর্ষ-স্তরের ইউআরএলের সাইট ( স্কিম এবং রেজিস্ট্রেবল ডোমেন ) যা ব্রাউজারটি কুকি সেট করার শেষ পয়েন্টে অনুরোধের শুরুতে ভিজিট করেছিল।

আগের উদাহরণে, যেখানে https://support.chat.example এম্বেড করা হয়েছে https://retail.example , সেখানে শীর্ষ-স্তরের URL হল https://retail.example

সেই ক্ষেত্রে পার্টিশন কী হল ("https", "retail.example")

অনুরূপভাবে, একটি অনুরোধের পার্টিশন কী হল শীর্ষ-স্তরের URL এর সাইট যা ব্রাউজার একটি অনুরোধের শুরুতে পরিদর্শন করে। ব্রাউজারগুলিকে অবশ্যই সেই কুকির মতো একই পার্টিশন কী সহ অনুরোধে Partitioned বৈশিষ্ট্য সহ একটি কুকি পাঠাতে হবে।

আগে উদাহরণে কুকি কী চিপসের আগে এবং পরে কেমন দেখায় তা এখানে।

সাইট A এবং এম্বেড করা সাইট C একটি বিভাজিত কুকি ভাগ করে। এমবেড করা না হলে, সাইট সি পার্টিশন করা কুকি অ্যাক্সেস করতে পারে না।
সাইট A এবং এম্বেড করা সাইট C একটি বিভাজিত কুকি ভাগ করে। এমবেড করা না হলে, সাইট সি পার্টিশন করা কুকি অ্যাক্সেস করতে পারে না।

চিপসের আগে

key=("support.chat.example")

চিপসের পরে

key={("support.chat.example"),("https", "retail.example")}

নিরাপত্তা নকশা

ভাল নিরাপত্তা অনুশীলন উত্সাহিত করার জন্য, CHIPS এর সাথে, কুকিগুলি শুধুমাত্র নিরাপদ প্রোটোকল দ্বারা সেট করা হয় এবং পাঠানো হয়।

  • পার্টিশন করা কুকিজ অবশ্যই Secure দিয়ে সেট করতে হবে।
  • বিভাজনকৃত কুকিগুলিকে হোস্টনামের সাথে আবদ্ধ করার জন্য সেট করার সময় __Host- উপসর্গ ব্যবহার করার পরামর্শ দেওয়া হয় (এবং নিবন্ধনযোগ্য ডোমেন নয়)।

উদাহরণ:

Set-Cookie: __Host-example=34d8g; SameSite=None; Secure; Path=/; Partitioned;

চিপসের বিকল্প

স্টোরেজ অ্যাক্সেস এপিআই এবং সংশ্লিষ্ট রিলেটেড ওয়েবসাইট সেট (RWS) হল ওয়েব প্ল্যাটফর্ম মেকানিজম যা নির্দিষ্ট, ব্যবহারকারী-মুখী উদ্দেশ্যে সীমিত ক্রস-সাইট কুকি অ্যাক্সেস সক্ষম করে।

এগুলি চিপস পার্টিশনের বিকল্প যেখানে ক্রস-সাইট, বিভাজনবিহীন কুকগুলিতে অ্যাক্সেস প্রয়োজন।

এমন পরিস্থিতিতে স্টোরেজ অ্যাক্সেস API এবং সম্পর্কিত ওয়েবসাইট সেটগুলি বিবেচনা করুন যেখানে একাধিক সম্পর্কিত সাইটে এমবেড করা পরিষেবার জন্য আপনার একই কুকির প্রয়োজন হয়৷

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

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

ডেমো

এই ডেমো আপনাকে পার্টিশন করা কুকিজ কিভাবে কাজ করে এবং আপনি কিভাবে DevTools-এ সেগুলি পরিদর্শন করতে পারেন তার মধ্যে নিয়ে যাবে।

সাইট A সাইট B থেকে একটি আইফ্রেম এম্বেড করে যা দুটি কুকি সেট করতে জাভাস্ক্রিপ্ট ব্যবহার করে: একটি বিভাজিত এবং বিভাজিত কুকি। সাইট B document.cookie ব্যবহার করে সেই অবস্থান থেকে অ্যাক্সেসযোগ্য সমস্ত কুকি প্রদর্শন করে৷

যখন তৃতীয় পক্ষের কুকি ব্লক করা হয়, সাইট B শুধুমাত্র ক্রস-সাইট প্রসঙ্গে Partitioned বৈশিষ্ট্য সহ কুকি সেট করতে এবং অ্যাক্সেস করতে সক্ষম হবে।

যখন তৃতীয় পক্ষের কুকির অনুমতি দেওয়া হয়, তখন সাইট B বিভাজনবিহীন কুকি সেট এবং অ্যাক্সেস করতে সক্ষম হয়।

সাইট A এবং সাইট B
বাম: তৃতীয় পক্ষের কুকি ব্লক করা হয়েছে। ডানদিকে: তৃতীয় পক্ষের কুকিজ অনুমোদিত।

পূর্বশর্ত

  1. Chrome 118 বা উচ্চতর।
  2. chrome://flags/#test-third-party-cookie-phaseout এ যান এবং এই সেটিংটি সক্ষম করুন

পার্টিশন করা কুকি পরীক্ষা করতে DevTools ব্যবহার করুন

  1. https://chips-site-a.glitch.me দেখুন।
  2. DevTools খুলতে Control+Shift+J (বা Mac-এ Command+Option+J ) টিপুন।
  3. অ্যাপ্লিকেশন ট্যাবে ক্লিক করুন।
  4. অ্যাপ্লিকেশন > স্টোরেজ > কুকিজে নেভিগেট করুন।
  5. https://chips-site-b.glitch.me ক্লিক করুন।

DevTools নির্বাচিত মূল থেকে সমস্ত কুকি প্রদর্শন করবে।

DevTools অ্যাপ্লিকেশন ট্যাবে সাইট B থেকে কুকিজ।

সাইট B শুধুমাত্র ক্রস-সাইট প্রসঙ্গে পার্টিশন করা কুকি সেট করতে পারে, পার্টিশন না করা কুকি ব্লক করা হবে:

  • আপনি শীর্ষ স্তরের সাইট https://chips-site-a.glitch.me এর পার্টিশন কী সহ __Host-partitioned-cookie দেখতে পাবেন।
__Host-partitioned-cookie-এর জন্য পার্টিশন কী।
  1. সাইট বি-তে যান ক্লিক করুন।
  2. DevTools-এ, অ্যাপ্লিকেশন > স্টোরেজ > কুকিজে নেভিগেট করুন।
  3. https://chips-site-b.glitch.me ক্লিক করুন।
সাইট বি
শীর্ষ-স্তরে, সাইট B সমস্ত কুকি দেখতে পারে - বিভাজিত এবং বিভাজিত নয়

এই পরিস্থিতিতে, যেহেতু আপনি শীর্ষ-স্তরের প্রেক্ষাপটে B সাইটে আছেন, এটি উভয় কুকি সেট এবং অ্যাক্সেস করতে পারে:

  • unpartitioned-cookie একটি খালি পার্টিশন কী আছে।
  • __Host-partitioned-cookie কুকিতে পার্টিশন কী আছে https://chips-site-b.glitch.me
একটি শীর্ষ-স্তরের সাইট হিসাবে B পরিদর্শন করার সময় DevTools অ্যাপ্লিকেশন ট্যাবে সাইট B থেকে কুকিজ। __Host-partitioned-cookie-এ পার্টিশন কী আছে https://chips-site-b.glitch.me।

আপনি যদি সাইট A-তে ফিরে যান, unpartitioned-cookie এখন ব্রাউজারে সংরক্ষণ করা হয়, তবে এটি সাইট A থেকে অ্যাক্সেসযোগ্য হবে না।

  1. সাইট A এ যান ক্লিক করুন।
  2. নেটওয়ার্ক ট্যাবে ক্লিক করুন।
  3. https://chips-site-b.glitch.me ক্লিক করুন।
  4. কুকিজ ট্যাবে ক্লিক করুন।

সাইট A-তে থাকাকালীন, আপনি শীর্ষ স্তরের সাইট https://chips-site-a.glitch.me এর পার্টিশন কী সহ __Host-partitioned-cookie দেখতে পাবেন।

নেটওয়ার্ক ট্যাব সাইট B iframe থেকে কুকিজ দেখায় যা সাইট A এ এমবেড করার সময় অ্যাক্সেসযোগ্য।

আপনি যদি ফিল্টার করা কুকিজ অনুরোধ চেক করেন তাহলে DevTools দেখাবে যে পার্টিশন না করা কুকি ব্লক করা হয়েছে, একটি টুলটিপ সহ হলুদ রঙে হাইলাইট করা হয়েছে: "এই কুকিটি ব্যবহারকারীর পছন্দের কারণে ব্লক করা হয়েছে"

নেটওয়ার্ক ট্যাব সাইট B iframe থেকে ব্লক করা কুকি দেখাচ্ছে।

অ্যাপ্লিকেশন > স্টোরেজ > কুকিতে https://chips-site-b.glitch.me ক্লিক করলে দেখাবে:

  • খালি পার্টিশন কী সহ unpartitioned-cookie
  • __Host-partitioned-cookie কুকি পার্টিশন কী সহ https://chips-site-a.glitch.me
DevTools অ্যাপ্লিকেশন ট্যাবে সাইট B থেকে কুকিজ। __Host-partitioned-cookie কুকিতে পার্টিশন কী আছে https://chips-site-a.glitch.meunpartitioned-cookie দেখানো হয়েছে, কিন্তু সাইট B iframe-এ এটি অ্যাক্সেসযোগ্য নয় যখন এটি সাইট A এ এম্বেড করা থাকে।

কুকিজ সাফ করুন

ডেমো রিসেট করতে, সাইটের জন্য সমস্ত কুকি সাফ করুন:

  • DevTools খুলতে Control+Shift+J (বা Mac-এ Command+Option+J ) টিপুন।
  • অ্যাপ্লিকেশন ট্যাবে ক্লিক করুন।
  • অ্যাপ্লিকেশন > স্টোরেজ > কুকিজে নেভিগেট করুন।
  • https://chips-site-b.glitch.me এ রাইট-ক্লিক করুন।
  • সাফ ক্লিক করুন.

সম্পদ

,

শীর্ষ-স্তরের সাইট প্রতি একটি পৃথক কুকি জার সহ বিকাশকারীদের "পার্টিশন করা" স্টোরেজে একটি কুকি বেছে নেওয়ার অনুমতি দিন৷

বাস্তবায়নের অবস্থা

ব্রাউজার সমর্থন

  • ক্রোম: 114।
  • প্রান্ত: 114।
  • ফায়ারফক্স: 131।
  • সাফারি: সমর্থিত নয়।

উৎস

চিপস কি?

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

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

চিপস, স্টোরেজ অ্যাক্সেস এপিআই , এবং সম্পর্কিত ওয়েবসাইট সেটগুলি ক্রস-সাইট প্রসঙ্গ থেকে কুকিজ পড়ার এবং লেখার একমাত্র উপায়, যেমন iframes, যখন তৃতীয় পক্ষের কুকিগুলি ব্লক করা হয়৷

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

শীর্ষ-স্তরের প্রসঙ্গ দ্বারা বিভাজিত ক্রস-সাইট কুকিগুলিকে সমর্থন করার জন্য CHIPS একটি নতুন কুকি বৈশিষ্ট্য, Partitioned প্রবর্তন করে।

সেট-কুকি হেডার:

Set-Cookie: __Host-name=value; Secure; Path=/; SameSite=None; Partitioned;

জাভাস্ক্রিপ্ট:

document.cookie="__Host-name=value; Secure; Path=/; SameSite=None; Partitioned;"

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

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

পার্টিশন করা কুকির সাহায্যে, যখন একজন ব্যবহারকারী সাইট A পরিদর্শন করে এবং সাইট C থেকে এম্বেড করা বিষয়বস্তু পার্টিশনড অ্যাট্রিবিউট সহ একটি কুকি সেট করে, তখন কুকি একটি পার্টিশন করা জারে সংরক্ষিত হয় যা শুধুমাত্র কুকিজের জন্য নির্ধারিত হয় যেটি সাইট A এ এমবেড করার সময় সাইট C সেট করে। ব্রাউজার যখন শীর্ষ-স্তরের সাইট A হয় শুধুমাত্র তখনই সেই কুকি পাঠাবে।

ব্যবহারকারী যখন একটি নতুন সাইট ভিজিট করেন, উদাহরণস্বরূপ সাইট B, একটি এম্বেড করা C ফ্রেম সেই কুকিটি পাবে না যা C সাইট A-তে এম্বেড করার সময় সেট করা হয়েছিল।

যদি একজন ব্যবহারকারী একটি শীর্ষ স্তরের ওয়েবসাইট হিসাবে সাইট C পরিদর্শন করেন, A এ এমবেড করার সময় C সেট করা পার্টিশন করা কুকিও সেই অনুরোধে পাঠানো হবে না।

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

কেস ব্যবহার করুন

উদাহরণস্বরূপ, retail.example সাইটটি তার সাইটে একটি সমর্থন চ্যাট বক্স এম্বেড করার জন্য একটি তৃতীয়-পক্ষ পরিষেবা support.chat.example এর সাথে কাজ করতে চাইতে পারে৷ অনেক এম্বেডযোগ্য চ্যাট পরিষেবা আজ রাষ্ট্র বাঁচাতে কুকিজের উপর নির্ভর করে।

এম্বেড করা চ্যাট উইজেট সহ একটি ওয়েব সাইট দেখানো ডায়াগ্রাম
শীর্ষ-স্তরের সাইট retail.example এম্বেড করা একটি তৃতীয় পক্ষের পরিষেবা support.chat.example

একটি ক্রস-সাইট কুকি সেট করার ক্ষমতা ছাড়া, support.chat.example বিকল্প, প্রায়শই আরও জটিল, স্টেট স্টোর করার পদ্ধতি খুঁজে বের করতে হবে। বিকল্পভাবে, এটিকে শীর্ষ-স্তরের পৃষ্ঠায় এম্বেড করা দরকার যা ঝুঁকির পরিচয় দেয় কারণ এটি support.chat.example স্ক্রিপ্টকে retail.example-এ উন্নত বিশেষাধিকার পেতে দেয়, যেমন প্রমাণীকরণ কুকি অ্যাক্সেস করার ক্ষমতা।

CHIPS অ-বিভাগহীন কুকির সাথে যুক্ত ঝুঁকি ছাড়াই ক্রস-সাইট কুকিজ ব্যবহার চালিয়ে যাওয়ার জন্য একটি সহজ বিকল্প প্রদান করে।

CHIPS-এর উদাহরণ ব্যবহারের ক্ষেত্রে এমন কোনো পরিস্থিতি অন্তর্ভুক্ত যেখানে ক্রস-সাইট সাবরিসোর্সগুলির জন্য সেশন বা স্থায়ী অবস্থার কিছু ধারণা প্রয়োজন যা একটি একক শীর্ষ-স্তরের সাইটে ব্যবহারকারীর কার্যকলাপের জন্য স্কোপ করা হয়, যেমন:

  • তৃতীয় পক্ষের চ্যাট এম্বেড
  • তৃতীয় পক্ষের মানচিত্র এম্বেড
  • তৃতীয় পক্ষের পেমেন্ট এম্বেড
  • Subresource CDN লোড ব্যালেন্সিং
  • মাথাবিহীন CMS প্রদানকারী
  • অবিশ্বস্ত ব্যবহারকারী সামগ্রী (যেমন googleusercontent.com এবং githubusercontent.com) পরিবেশনের জন্য স্যান্ডবক্স ডোমেন
  • তৃতীয় পক্ষের CDN যেগুলি প্রথম-পক্ষের সাইটে প্রমাণীকরণের স্থিতি দ্বারা অ্যাক্সেস-নিয়ন্ত্রিত সামগ্রী পরিবেশন করতে কুকিজ ব্যবহার করে (উদাহরণস্বরূপ, তৃতীয় পক্ষের CDN-এ হোস্ট করা সোশ্যাল মিডিয়া সাইটে প্রোফাইল ছবি)
  • ফ্রন্ট-এন্ড ফ্রেমওয়ার্ক যা তাদের অনুরোধে কুকি ব্যবহার করে দূরবর্তী API-এর উপর নির্ভর করে
  • এমবেড করা বিজ্ঞাপন যেগুলির জন্য প্রকাশক প্রতি রাজ্যের সুযোগ প্রয়োজন (উদাহরণস্বরূপ, সেই ওয়েবসাইটের জন্য ব্যবহারকারীদের বিজ্ঞাপনের পছন্দগুলি ক্যাপচার করা)

কেন চিপস একটি অপ্ট-ইন পার্টিশনিং মডেল ব্যবহার করে

যেখানে বিভাজনবিহীন তৃতীয় পক্ষের কুকিজ অ্যাক্সেস ব্লক করা হয়েছে, সেখানে পার্টিশন করার জন্য কয়েকটি অন্যান্য পদ্ধতির চেষ্টা করা হয়েছে।

ফায়ারফক্স ঘোষণা করেছে যে তারা তাদের ETP স্ট্রিক্ট মোড এবং প্রাইভেট ব্রাউজিং মোডে ডিফল্টরূপে সমস্ত তৃতীয়-পক্ষ কুকিকে বিভাজন করছে, তাই সমস্ত ক্রস-সাইট কুকি শীর্ষ-স্তরের সাইট দ্বারা বিভক্ত করা হয়েছে। যাইহোক, তৃতীয় পক্ষের অপ্ট-ইন ছাড়া কুকি পার্টিশন করা অপ্রত্যাশিত বাগগুলির দিকে পরিচালিত করতে পারে, যেহেতু কিছু তৃতীয়-পক্ষ পরিষেবা সার্ভার তৈরি করেছে যা একটি অ-বিভাজন তৃতীয়-পক্ষ কুকির আশা করে৷

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

পার্টিশনযুক্ত কুকিজের বিদ্যমান বাস্তবায়নগুলি বাদ দিয়ে চিপগুলি কী সেট করে তা হ'ল তৃতীয় পক্ষের অপ্ট-ইন। ক্রস-পার্টির অনুরোধগুলিতে একবার পাঠানোর জন্য কুকিজগুলি অবশ্যই একটি নতুন বৈশিষ্ট্য সহ সেট করতে হবে (অনিচ্ছাকৃত) তৃতীয় পক্ষের কুকিগুলি অপ্রচলিত হয়ে যায়।

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

আজ, কুকিগুলি সাইটের হোস্টনাম বা ডোমেনে কী করা হয়েছে যা তাদের সেট করে, অর্থাৎ তাদের হোস্ট কী

উদাহরণস্বরূপ, https://support.chat.example থেকে কুকিজের জন্য, হোস্ট কীটি ("support.chat.example")

চিপসের অধীনে, কুকিগুলি যা পার্টিশনিংয়ে বেছে নেয় তাদের হোস্ট কী এবং পার্টিশন কীতে ডাবল-কিড হবে।

একটি কুকির পার্টিশন কী হ'ল শীর্ষ-স্তরের ইউআরএল এর সাইট ( স্কিম এবং রেজিস্ট্রেবল ডোমেন ) ব্রাউজারটি কুকিটি সেট করে এমন শেষ পয়েন্টে অনুরোধের শুরুতে গিয়েছিল।

আগের উদাহরণে, যেখানে https://support.chat.example https://retail.example এ এম্বেড করা আছে, শীর্ষ স্তরের url হ'ল https://retail.example

এই ক্ষেত্রে পার্টিশন কী ("https", "retail.example")

তেমনি, একটি অনুরোধের পার্টিশন কী হ'ল শীর্ষ স্তরের ইউআরএল এর সাইটটি ব্রাউজারটি একটি অনুরোধের শুরুতে পরিদর্শন করছে। ব্রাউজারগুলিকে অবশ্যই সেই কুকির মতো একই পার্টিশন কী সহ অনুরোধে Partitioned বৈশিষ্ট্য সহ একটি কুকি প্রেরণ করতে হবে।

উদাহরণটিতে কুকি কীটি আগে চিপসের আগে এবং পরে দেখতে দেখতে এখানে।

সাইট এ এবং এমবেডেড সাইট সি একটি বিভাজনযুক্ত কুকি ভাগ করে। এম্বেড না থাকলে, সাইট সি পার্টিশনযুক্ত কুকি অ্যাক্সেস করতে পারে না।
সাইট এ এবং এমবেডেড সাইট সি একটি বিভাজনযুক্ত কুকি ভাগ করে। এম্বেড না থাকলে, সাইট সি পার্টিশনযুক্ত কুকি অ্যাক্সেস করতে পারে না।

চিপসের আগে

key=("support.chat.example")

চিপসের পরে

key={("support.chat.example"),("https", "retail.example")}

নিরাপত্তা নকশা

চিপস সহ ভাল সুরক্ষা অনুশীলনগুলিকে উত্সাহিত করার জন্য, কুকিগুলি কেবল সেট করে এবং সুরক্ষিত প্রোটোকলগুলি প্রেরণ করা হয়।

  • পার্টিশনযুক্ত কুকিজ অবশ্যই Secure দিয়ে সেট করা উচিত।
  • হোস্টনামে আবদ্ধ করার জন্য পার্টিশনযুক্ত কুকিজ সেট করার সময় __Host- উপসর্গটি ব্যবহার করার পরামর্শ দেওয়া হয় (এবং নিবন্ধকরণযোগ্য ডোমেন নয়)।

উদাহরণ:

Set-Cookie: __Host-example=34d8g; SameSite=None; Secure; Path=/; Partitioned;

চিপস বিকল্প

স্টোরেজ অ্যাক্সেস এপিআই এবং সম্পর্কিত সম্পর্কিত ওয়েবসাইট সেটগুলি (আরডাব্লুএস) নির্দিষ্ট, ব্যবহারকারী-মুখের উদ্দেশ্যে সীমিত ক্রস-সাইট কুকি অ্যাক্সেস সক্ষম করতে ওয়েব প্ল্যাটফর্ম প্রক্রিয়া।

এগুলি চিপস বিভাজনের বিকল্প যেখানে ক্রস-সাইট, আনপারিটিশনযুক্ত কুকগুলিতে অ্যাক্সেস প্রয়োজন।

একাধিক সম্পর্কিত সাইটগুলিতে এম্বেড থাকা কোনও পরিষেবাতে আপনার একই কুকির প্রয়োজন এমন পরিস্থিতিতে স্টোরেজ অ্যাক্সেস এপিআই এবং সম্পর্কিত ওয়েবসাইট সেটগুলি বিবেচনা করুন।

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

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

ডেমো

এই ডেমোটি আপনাকে কীভাবে বিভাজনযুক্ত কুকিজ কাজ করে এবং কীভাবে আপনি সেগুলি ডেভটুলগুলিতে পরিদর্শন করতে পারেন তার মধ্য দিয়ে আপনাকে চলবে।

সাইট এ সাইট বি থেকে একটি আইফ্রেম এম্বেড করে যা দুটি কুকিজ সেট করতে জাভাস্ক্রিপ্ট ব্যবহার করে: একটি বিভাজনযুক্ত এবং আনপারিটিশড কুকি। সাইট বি document.cookie ব্যবহার করে সেই অবস্থান থেকে অ্যাক্সেসযোগ্য সমস্ত কুকিজ প্রদর্শন করে।

তৃতীয় পক্ষের কুকিজগুলি অবরুদ্ধ করা হলে, সাইট বি কেবল ক্রস-সাইট প্রসঙ্গে Partitioned বৈশিষ্ট্য সহ কুকিটি সেট এবং অ্যাক্সেস করতে সক্ষম হবে।

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

সাইট এ এবং সাইট খ
বাম: তৃতীয় পক্ষের কুকিজ অবরুদ্ধ করা হয়েছে। ডান: তৃতীয় পক্ষের কুকিজ অনুমোদিত।

পূর্বশর্ত

  1. ক্রোম 118 বা উচ্চতর।
  2. chrome://flags/#test-third-party-cookie-phaseout দেখুন এবং এই সেটিংটি সক্ষম করুন

পার্টিশনযুক্ত কুকিজ পরিদর্শন করতে ডিভটুলগুলি ব্যবহার করুন

  1. Https://chips-site-a.glich.me দেখুন।
  2. ডিভটুলগুলি খোলার জন্য Control+Shift+J (বা Command+Option+J ম্যাক) টিপুন।
  3. অ্যাপ্লিকেশন ট্যাবে ক্লিক করুন।
  4. অ্যাপ্লিকেশন> স্টোরেজ> কুকিজ নেভিগেট করুন।
  5. https://chips-site-b.glitch.me ক্লিক করুন।

ডিভটুলগুলি নির্বাচিত উত্স থেকে সমস্ত কুকি প্রদর্শন করবে।

ডেভটুলস অ্যাপ্লিকেশন ট্যাবে সাইট বি থেকে কুকিজ।

সাইট বি কেবল ক্রস-সাইট প্রসঙ্গে পার্টিশনযুক্ত কুকিটি সেট করতে পারে, আনপারিটিশড কুকিটি অবরুদ্ধ করা হবে:

  • আপনার শীর্ষ স্তরের সাইট https://chips-site-a.glitch.me এর পার্টিশন কী সহ __Host-partitioned-cookie দেখতে হবে।
__Host-partitioned-কুকির জন্য পার্টিশন কী।
  1. সাইটে যেতে ক্লিক করুন খ
  2. ডিভটুলগুলিতে, অ্যাপ্লিকেশন> স্টোরেজ> কুকিজগুলিতে নেভিগেট করুন।
  3. https://chips-site-b.glitch.me ক্লিক করুন।
সাইট বি
শীর্ষ -স্তরে, সাইট বি সমস্ত কুকিজ দেখতে পারে - বিভাজনযুক্ত এবং বিভক্ত নয়

এই দৃশ্যে, যেহেতু আপনি শীর্ষ স্তরের প্রসঙ্গে সাইট বিতে রয়েছেন, এটি উভয় কুকিজ সেট এবং অ্যাক্সেস করতে পারে:

  • unpartitioned-cookie একটি খালি পার্টিশন কী রয়েছে।
  • __Host-partitioned-cookie https://chips-site-b.glitch.me
শীর্ষ স্তরের সাইট হিসাবে বি পরিদর্শন করার সময় ডিভটুলস অ্যাপ্লিকেশন ট্যাবে সাইট বি থেকে কুকিজ। __ হোস্ট-বিভাজনযুক্ত-কুকিতে পার্টিশন কী রয়েছে https://chips-site-b.glitt.me।

আপনি যদি সাইট এ-তে ফিরে নেভিগেট করেন, তবে unpartitioned-cookie এখন ব্রাউজারে সঞ্চিত রয়েছে তবে এটি সাইট এ থেকে অ্যাক্সেসযোগ্য হবে না

  1. সাইটে যান ক্লিক করুন a
  2. নেটওয়ার্ক ট্যাবে ক্লিক করুন।
  3. https://chips-site-b.glitch.me ক্লিক করুন।
  4. কুকিজ ট্যাবে ক্লিক করুন।

সাইট এ-তে থাকাকালীন, আপনার শীর্ষ স্তরের সাইট https://chips-site-a.glitch.me এর পার্টিশন কী সহ __Host-partitioned-cookie দেখতে হবে।

নেটওয়ার্ক ট্যাব সাইট বি ইফরমে থেকে কুকিজ দেখানো যা এটি সাইট এ এমবেড করা হলে অ্যাক্সেসযোগ্য

আপনি যদি শো ফিল্টার আউট কুকিজের অনুরোধগুলি চেক করেন তবে ডিভটুলগুলি দেখাবে যে অনাবৃত কুকিটি অবরুদ্ধ করা হয়েছে, একটি সরঞ্জামদণ্ডের সাথে হলুদ রঙের মধ্যে হাইলাইট করা হয়েছে: "এই কুকিটি ব্যবহারকারীর পছন্দের কারণে অবরুদ্ধ ছিল"

নেটওয়ার্ক ট্যাব সাইট বি ইফরাম থেকে অবরুদ্ধ কুকিজ দেখায়।

অ্যাপ্লিকেশনগুলিতে> স্টোরেজ> কুকিজ https://chips-site-b.glitch.me এ ক্লিক করে দেখাবে:

  • খালি পার্টিশন কী সহ unpartitioned-cookie
  • __Host-partitioned-cookie কুকি পার্টিশন কী সহ https://chips-site-a.glitch.me
ডেভটুলস অ্যাপ্লিকেশন ট্যাবে সাইট বি থেকে কুকিজ। __Host-partitioned-cookie কুকিতে পার্টিশন কী রয়েছে https://chips-site-a.glitch.meunpartitioned-cookie দেখানো হয়েছে, তবে সাইট এ-তে এম্বেড করা হলে এটি সাইট বি ইফরামের কাছে অ্যাক্সেসযোগ্য নয়

কুকিজ সাফ করুন

ডেমোটি পুনরায় সেট করতে, সাইটের জন্য সমস্ত কুকিজ সাফ করুন:

  • ডিভটুলগুলি খোলার জন্য Control+Shift+J (বা Command+Option+J ম্যাক) টিপুন।
  • অ্যাপ্লিকেশন ট্যাবে ক্লিক করুন।
  • অ্যাপ্লিকেশন> স্টোরেজ> কুকিজ নেভিগেট করুন।
  • https://chips-site-b.glitch.me এ ডান ক্লিক করুন।
  • সাফ ক্লিক করুন.

সম্পদ