আপনার সাইটটিকে পার্টিশন করা কুকিতে রূপান্তর করার সময়, আপনি অপ্রত্যাশিত আচরণের সম্মুখীন হতে পারেন যদি কোনো প্রদত্ত ক্লায়েন্টের জন্য একই নামের একটি বিভাজিত এবং অ-বিভাজনকৃত কুকি উভয়ই উপস্থিত থাকে।
একটি বিভাজিত কুকি সেট করা একই নামের একটি বিদ্যমান বিভাজিত কুকিকে ওভাররাইড বা প্রতিস্থাপন করবে না। উভয়ই বিদ্যমান থাকবে, যতক্ষণ না তৃতীয় পক্ষের কুকি সক্রিয় থাকে, তবে আলাদা কুকি জারে। যখন তৃতীয় পক্ষের কুকিজ নিষ্ক্রিয় করা হয়, শুধুমাত্র বিভাজিত কুকি গ্রহণ করা হবে। উভয় কুকি উপস্থিত থাকলে, কোনটি পার্টিশন করা হয়েছে এবং কোনটি নয় তা প্রোগ্রাম্যাটিকভাবে বলা সম্ভব নয় এবং এটি অপ্রত্যাশিত আচরণের দিকে নিয়ে যেতে পারে।
এটি মোকাবেলার জন্য দুটি সম্ভাব্য বিকল্প রয়েছে: 1. আপনি যে কুকিটি প্রতিস্থাপন করছেন তার মেয়াদ শেষ করুন 2. আপনার কুকিজের নাম পরিবর্তন করুন
মূল বিবেচনা
আপনি পার্টিশন করা কুকিতে স্থানান্তর করার সময়, নিম্নলিখিতগুলি মনে রাখবেন:
- একটি HTTP অনুরোধে প্রেরিত একটি কুকি পার্টিশন বা অ-বিভাজন করা হয়েছে কিনা প্রোগ্রামগতভাবে নির্ধারণ করার কোন উপায় নেই। তবে, আপনি Chrome DevTools-এ একটি কুকির বিভাজিত অবস্থা নির্ধারণ করতে পারেন। আপনি কুকিস্টোর এপিআই ব্যবহার করে বিভক্ত এবং বিভাজনবিহীন কুকির মধ্যে পার্থক্য করতে পারেন যেগুলিতে
HttpOnly
বৈশিষ্ট্য নেই। - পার্টিশন করা কুকিগুলি অ-বিভাজনকৃত কুকিগুলিকে ওভাররাইট করে না—দুটি কুকি যেগুলি হুবহু একই (অর্থাৎ নাম, ডোমেন বা পথের মতো একই বৈশিষ্ট্য রয়েছে) আলাদা কুকি হিসাবে গণ্য করা হবে যদি শুধুমাত্র একটিতে
Partitioned
বৈশিষ্ট্য থাকে। - এমন একটি পরিস্থিতি এড়াতে ভাল যেখানে আপনার কাছে একটি পার্টিশনড কুকি এবং একই নামের একটি অ-বিভাজনকৃত কুকি একই নেটওয়ার্ক কলে ফিরে আসবে৷
আপনি যে কুকিগুলি প্রতিস্থাপন করছেন তার মেয়াদ শেষ করুন
যদি আপনার সাইট বা পরিষেবা নামের পরিবর্তনকে সামঞ্জস্য করতে না পারে, তাহলে আপনি একটি নতুন পার্টিশন করা কুকি তৈরি করতে পারেন যখন বিদ্যমান আন-পার্টিশনড কুকির মেয়াদ শেষ হয়। একটি কুকি পার্টিশন করা হয়েছে কি না তা নির্ধারণ করার কোনো উপায় না থাকলেও, Partitioned
অ্যাট্রিবিউট সহ Set-Cookie
হেডারগুলি বিভাজিত নয় এমন কুকিগুলিকে প্রভাবিত করবে না৷
নিচের উদাহরণটি দেখায় কিভাবে অ-বিভাজনবিহীন কুকির মেয়াদ শেষ করা যায় যেটিকে example
বলা হয় এবং যেকোনও পার্টিশন করা কুকিগুলিকে প্রভাবিত না করে রেখে দেওয়া হয়, এমনকি তাদের একই নাম থাকলেও। cookieName
নামক একটি নতুন বিভাজিত কুকি যোগ বা আপডেট করা হবে যদি এটি ইতিমধ্যে বিদ্যমান থাকে।
Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
আপনার কুকিজের নাম পরিবর্তন করুন
একটি নিরবচ্ছিন্ন রূপান্তর নিশ্চিত করার সবচেয়ে শক্তিশালী উপায় হল আপনার বিভাজিত এবং বিভাজনবিহীন কুকিজের জন্য বিভিন্ন নাম ব্যবহার করা। উদাহরণস্বরূপ, যদি আপনার "উদাহরণ" নামে একটি বিভাজনবিহীন কুকি থাকে তবে আপনি এটিকে একটি বিভাজিত কুকিতে স্থানান্তর করতে পারেন।
Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
যেহেতু কুকির মেয়াদ শেষ হওয়া প্রোগ্রামগতভাবে উন্মুক্ত করা হয় না, তাই নতুন কুকির মেয়াদ শেষ হওয়ার জন্য অ-বিভাজনকৃত কুকির মেয়াদ শেষ হওয়ার জন্য সেট করার কোন উপায় নেই। এই প্রক্রিয়া চলাকালীন কুকির মান রিফ্রেশ করা বাস্তবসম্মত হতে পারে।
বিভাজিত এবং অ-বিভাজন উভয় কুকি বজায় রাখুন
ট্রানজিশন পিরিয়ডের সময়, দুটি আলাদা সিঙ্ক করা কুকিজ বজায় রাখার কথা বিবেচনা করুন: একটি যেটি পার্টিশন করা হয়েছে এবং একটি নয়। উদাহরণ স্বরূপ, আপনার কাছে auth
এবং auth-partitioned
কুকি উভয়ই থাকতে পারে, যেখানে পরেরটি Partitioned
এট্রিবিউট দিয়ে সেট করা হয়েছে।
প্রতিবার যখন মান আপডেট করা হয়, আপনার উভয় কুকি সেট করার চেষ্টা করা উচিত।
- ক্লায়েন্টদের ক্ষেত্রে যারা তৃতীয় পক্ষের কুকি ব্লক করে কিন্তু এখনও চিপস সমর্থন করে না: কোনটিই কুকি গ্রহণ করা হবে না।
- ক্লায়েন্টদের ক্ষেত্রে যারা তৃতীয় পক্ষের কুকিজ ব্লক করে এবং চিপস সমর্থন করে:
auth
কুকি প্রত্যাখ্যান করা হবে, তবেauth-partitioned
কুকি গ্রহণ করা হবে। - ক্লায়েন্টদের ক্ষেত্রে যারা তৃতীয় পক্ষের কুকিজ ব্লক করে না, তারা চিপস সমর্থন করে কিনা তা নির্বিশেষে:
auth
এবংauth-partitioned
উভয়ই গৃহীত হয়।
যখন আপনার অ্যাপ্লিকেশনের প্রমাণীকরণ কুকি পড়ার প্রয়োজন হয়, তখন আপনাকে প্রথমে auth-partitioned
সন্ধান করা উচিত; কিন্তু যদি আপনাকে অস্থায়ীভাবে পরিবর্তনটি ফিরিয়ে আনতে হয়, আপনি auth
কুকি খুঁজতে ফিরে যেতে পারেন।
একবার আপনি প্রতিষ্ঠিত হয়ে গেলে যে বেশিরভাগ ব্যবহারকারী তাদের কুকি রিফ্রেশ করেছেন, auth-partitioned
কুকি অবসর দেওয়া যেতে পারে এবং বিভাজিত বৈশিষ্ট্যটি নিয়মিত প্রমাণীকরণ কুকিতে যোগ করা যেতে পারে।
আপনার সাইটটিকে পার্টিশন করা কুকিতে রূপান্তর করার সময়, আপনি অপ্রত্যাশিত আচরণের সম্মুখীন হতে পারেন যদি কোনো প্রদত্ত ক্লায়েন্টের জন্য একই নামের একটি বিভাজিত এবং অ-বিভাজনকৃত কুকি উভয়ই উপস্থিত থাকে।
একটি বিভাজিত কুকি সেট করা একই নামের একটি বিদ্যমান বিভাজিত কুকিকে ওভাররাইড বা প্রতিস্থাপন করবে না। উভয়ই বিদ্যমান থাকবে, যতক্ষণ না তৃতীয় পক্ষের কুকি সক্রিয় থাকে, তবে আলাদা কুকি জারে। যখন তৃতীয় পক্ষের কুকিজ নিষ্ক্রিয় করা হয়, শুধুমাত্র বিভাজিত কুকি গ্রহণ করা হবে। উভয় কুকি উপস্থিত থাকলে, কোনটি পার্টিশন করা হয়েছে এবং কোনটি নয় তা প্রোগ্রাম্যাটিকভাবে বলা সম্ভব নয় এবং এটি অপ্রত্যাশিত আচরণের দিকে নিয়ে যেতে পারে।
এটি মোকাবেলার জন্য দুটি সম্ভাব্য বিকল্প রয়েছে: 1. আপনি যে কুকিটি প্রতিস্থাপন করছেন তার মেয়াদ শেষ করুন 2. আপনার কুকিজের নাম পরিবর্তন করুন
মূল বিবেচনা
আপনি পার্টিশন করা কুকিতে স্থানান্তর করার সময়, নিম্নলিখিতগুলি মনে রাখবেন:
- একটি HTTP অনুরোধে প্রেরিত একটি কুকি পার্টিশন বা অ-বিভাজন করা হয়েছে কিনা প্রোগ্রামগতভাবে নির্ধারণ করার কোন উপায় নেই। তবে, আপনি Chrome DevTools-এ একটি কুকির বিভাজিত অবস্থা নির্ধারণ করতে পারেন। আপনি কুকিস্টোর এপিআই ব্যবহার করে বিভক্ত এবং বিভাজনবিহীন কুকির মধ্যে পার্থক্য করতে পারেন যেগুলিতে
HttpOnly
বৈশিষ্ট্য নেই। - পার্টিশন করা কুকিগুলি অ-বিভাজনকৃত কুকিগুলিকে ওভাররাইট করে না—দুটি কুকি যেগুলি হুবহু একই (অর্থাৎ নাম, ডোমেন বা পথের মতো একই বৈশিষ্ট্য রয়েছে) আলাদা কুকি হিসাবে গণ্য করা হবে যদি শুধুমাত্র একটিতে
Partitioned
বৈশিষ্ট্য থাকে। - এমন একটি পরিস্থিতি এড়াতে ভাল যেখানে আপনার কাছে একটি পার্টিশনড কুকি এবং একই নামের একটি অ-বিভাজনকৃত কুকি একই নেটওয়ার্ক কলে ফিরে আসবে৷
আপনি যে কুকিগুলি প্রতিস্থাপন করছেন তার মেয়াদ শেষ করুন
যদি আপনার সাইট বা পরিষেবা নামের পরিবর্তনকে সামঞ্জস্য করতে না পারে, তাহলে আপনি একটি নতুন পার্টিশন করা কুকি তৈরি করতে পারেন যখন বিদ্যমান আন-পার্টিশনড কুকির মেয়াদ শেষ হয়। একটি কুকি পার্টিশন করা হয়েছে কি না তা নির্ধারণ করার কোনো উপায় না থাকলেও, Partitioned
অ্যাট্রিবিউট সহ Set-Cookie
হেডারগুলি বিভাজিত নয় এমন কুকিগুলিকে প্রভাবিত করবে না৷
নিচের উদাহরণটি দেখায় কিভাবে অ-বিভাজনবিহীন কুকির মেয়াদ শেষ করা যায় যেটিকে example
বলা হয় এবং যেকোনও পার্টিশন করা কুকিগুলিকে প্রভাবিত না করে রেখে দেওয়া হয়, এমনকি তাদের একই নাম থাকলেও। cookieName
নামক একটি নতুন বিভাজিত কুকি যোগ বা আপডেট করা হবে যদি এটি ইতিমধ্যে বিদ্যমান থাকে।
Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
আপনার কুকিজের নাম পরিবর্তন করুন
একটি নিরবচ্ছিন্ন রূপান্তর নিশ্চিত করার সবচেয়ে শক্তিশালী উপায় হল আপনার বিভাজিত এবং বিভাজনবিহীন কুকিজের জন্য বিভিন্ন নাম ব্যবহার করা। উদাহরণস্বরূপ, যদি আপনার "উদাহরণ" নামে একটি বিভাজনবিহীন কুকি থাকে তবে আপনি এটিকে একটি বিভাজিত কুকিতে স্থানান্তর করতে পারেন।
Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
যেহেতু কুকির মেয়াদ শেষ হওয়া প্রোগ্রামগতভাবে উন্মুক্ত করা হয় না, তাই নতুন কুকির মেয়াদ শেষ হওয়ার জন্য অ-বিভাজনকৃত কুকির মেয়াদ শেষ হওয়ার জন্য সেট করার কোন উপায় নেই। এই প্রক্রিয়া চলাকালীন কুকির মান রিফ্রেশ করা বাস্তবসম্মত হতে পারে।
বিভাজিত এবং অ-বিভাজন উভয় কুকি বজায় রাখুন
ট্রানজিশন পিরিয়ডের সময়, দুটি আলাদা সিঙ্ক করা কুকিজ বজায় রাখার কথা বিবেচনা করুন: একটি যেটি পার্টিশন করা হয়েছে এবং একটি নয়। উদাহরণ স্বরূপ, আপনার কাছে auth
এবং auth-partitioned
কুকি উভয়ই থাকতে পারে, যেখানে পরেরটি Partitioned
এট্রিবিউট দিয়ে সেট করা হয়েছে।
প্রতিবার যখন মান আপডেট করা হয়, আপনার উভয় কুকি সেট করার চেষ্টা করা উচিত।
- ক্লায়েন্টদের ক্ষেত্রে যারা তৃতীয় পক্ষের কুকি ব্লক করে কিন্তু এখনও চিপস সমর্থন করে না: কোনটিই কুকি গ্রহণ করা হবে না।
- ক্লায়েন্টদের ক্ষেত্রে যারা তৃতীয় পক্ষের কুকিজ ব্লক করে এবং চিপস সমর্থন করে:
auth
কুকি প্রত্যাখ্যান করা হবে, তবেauth-partitioned
কুকি গ্রহণ করা হবে। - ক্লায়েন্টদের ক্ষেত্রে যারা তৃতীয় পক্ষের কুকিজ ব্লক করে না, তারা চিপস সমর্থন করে কিনা তা নির্বিশেষে:
auth
এবংauth-partitioned
উভয়ই গৃহীত হয়।
যখন আপনার অ্যাপ্লিকেশনের প্রমাণীকরণ কুকি পড়ার প্রয়োজন হয়, তখন আপনাকে প্রথমে auth-partitioned
সন্ধান করা উচিত; কিন্তু যদি আপনাকে অস্থায়ীভাবে পরিবর্তনটি ফিরিয়ে আনতে হয়, আপনি auth
কুকি খুঁজতে ফিরে যেতে পারেন।
একবার আপনি প্রতিষ্ঠিত হয়ে গেলে যে বেশিরভাগ ব্যবহারকারী তাদের কুকি রিফ্রেশ করেছেন, auth-partitioned
কুকি অবসর দেওয়া যেতে পারে এবং বিভাজিত বৈশিষ্ট্যটি নিয়মিত প্রমাণীকরণ কুকিতে যোগ করা যেতে পারে।