প্রতিটি কুকিতে একটি কী-মূল্যের জোড়া রয়েছে এবং সেই সাথে অনেকগুলি বৈশিষ্ট্য রয়েছে যা সেই কুকিটি কখন এবং কোথায় ব্যবহার করা হবে তা নিয়ন্ত্রণ করে।
SameSite
অ্যাট্রিবিউটের প্রবর্তন ( RFC6265bis এ সংজ্ঞায়িত) আপনাকে ঘোষণা করতে দেয় যে আপনার কুকি একটি প্রথম-পক্ষ বা একই-সাইট প্রসঙ্গে সীমাবদ্ধ কিনা। এখানে 'সাইট' এর অর্থ ঠিক কী তা বোঝার জন্য এটি সহায়ক। সাইটটি হল ডোমেইন প্রত্যয় এবং ডোমেনের ঠিক আগের অংশের সমন্বয়। উদাহরণস্বরূপ, www.web.dev
ডোমেইন হল web.dev
সাইটের অংশ।
মূল শব্দ: ব্যবহারকারী যদি www.web.dev
এ থাকে এবং static.web.dev
থেকে একটি চিত্রের অনুরোধ করে, এটি একই-সাইটের অনুরোধ।
পাবলিক প্রত্যয় তালিকা নির্ধারণ করে যে একই সাইটে কোন পৃষ্ঠাগুলিকে গণনা করা হয়৷ এটি শুধুমাত্র .com
এর মতো শীর্ষ-স্তরের ডোমেনের উপর নির্ভর করে না, তবে github.io
এর মতো পরিষেবাগুলিও অন্তর্ভুক্ত করতে পারে। এটি your-project.github.io
এবং my-project.github.io
আলাদা সাইট হিসাবে গণনা করতে সক্ষম করে।
মূল শব্দ: ব্যবহারকারী যদি your-project.github.io
এ থাকে এবং my-project.github.io
থেকে একটি চিত্রের অনুরোধ করে তবে সেটি একটি ক্রস-সাইট অনুরোধ।
কুকি ব্যবহার ঘোষণা করতে SameSite
অ্যাট্রিবিউট ব্যবহার করুন
একটি কুকিতে SameSite
অ্যাট্রিবিউট এই আচরণ নিয়ন্ত্রণ করার তিনটি ভিন্ন উপায় প্রদান করে। আপনি বৈশিষ্ট্য নির্দিষ্ট না করা বেছে নিতে পারেন, অথবা আপনি একই সাইটের অনুরোধে কুকি সীমাবদ্ধ করতে Strict
বা Lax
ব্যবহার করতে পারেন।
আপনি যদি SameSite
Strict
তে সেট করেন, আপনার কুকি শুধুমাত্র প্রথম পক্ষের প্রসঙ্গে পাঠানো যেতে পারে; অর্থাৎ, যদি কুকির জন্য সাইটটি ব্রাউজারের ঠিকানা বারে দেখানো সাইটের সাথে মিলে যায়। সুতরাং, যদি promo_shown
কুকি নিম্নরূপ সেট করা হয়:
Set-Cookie: promo_shown=1; SameSite=Strict
যখন ব্যবহারকারী আপনার সাইটে থাকে, তখন প্রত্যাশিতভাবে অনুরোধের সাথে কুকি পাঠানো হয়। যাইহোক, যদি ব্যবহারকারী অন্য একটি থেকে আপনার সাইটের একটি লিঙ্ক অনুসরণ করে, তাহলে সেই প্রাথমিক অনুরোধে কুকি পাঠানো হয় না। এটি এমন বৈশিষ্ট্যগুলির সাথে সম্পর্কিত কুকিগুলির জন্য ভাল যা সর্বদা একটি প্রাথমিক নেভিগেশনের পিছনে থাকে, যেমন একটি পাসওয়ার্ড পরিবর্তন করা বা একটি কেনাকাটা করা, তবে এটি promo_shown
এর মতো একটি কুকির জন্য খুব সীমাবদ্ধ। যদি আপনার পাঠক সাইটের লিঙ্কটি অনুসরণ করে, তাহলে তারা কুকি পাঠাতে চায় যাতে তাদের পছন্দ প্রয়োগ করা যায়।
SameSite=Lax
ব্রাউজারকে এই শীর্ষ-স্তরের নেভিগেশনগুলির সাথে কুকি পাঠানোর অনুমতি দেয়। উদাহরণস্বরূপ, যদি অন্য কোনো সাইট আপনার সাইটের বিষয়বস্তু উল্লেখ করে, এই ক্ষেত্রে আপনার বিড়ালের ছবি ব্যবহার করে এবং আপনার নিবন্ধের একটি লিঙ্ক নিম্নরূপ প্রদান করে:
<p>Look at this amazing cat!</p>
<img src="https://blog.example/blog/img/amazing-cat.png" />
<p>Read the <a href="https://blog.example/blog/cat.html">article</a>.</p>
একটি কুকি সহ Lax
এ নিম্নরূপ সেট করুন:
Set-Cookie: promo_shown=1; SameSite=Lax
যখন ব্রাউজার অন্য ব্যক্তির ব্লগের জন্য amazing-cat.png
অনুরোধ করে, তখন আপনার সাইট কুকি পাঠায় না। যাইহোক, যখন পাঠক আপনার সাইটে cat.html
লিঙ্কটি অনুসরণ করেন, সেই অনুরোধে কুকি অন্তর্ভুক্ত থাকে।
আমরা এইভাবে SameSite
ব্যবহার করার পরামর্শ দিই, ওয়েবসাইট প্রদর্শনকে Lax
এ প্রভাবিত করে এমন কুকিজ সেট করুন এবং ব্যবহারকারীর ক্রিয়াকলাপের সাথে সম্পর্কিত কুকিগুলিকে Strict
সেট করুন।
আপনি SameSite
None
এ সেট করতে পারেন যে আপনি কুকিটি সমস্ত প্রসঙ্গে পাঠাতে চান তা নির্দেশ করতে। আপনি যদি এমন একটি পরিষেবা প্রদান করেন যা অন্য সাইটগুলি ব্যবহার করে যেমন উইজেট, এম্বেড করা বিষয়বস্তু, অ্যাফিলিয়েট প্রোগ্রাম, বিজ্ঞাপন, বা একাধিক সাইট জুড়ে সাইন-ইন, আপনার উদ্দেশ্য পরিষ্কার তা নিশ্চিত করতে None
ব্যবহার করুন।
![তিনটি কুকি তাদের প্রসঙ্গের উপর নির্ভর করে None, Lax বা Strict লেবেলযুক্ত](https://web.dev/static/articles/samesite-cookies-explained/image/three-cookies-labelled-no-495f9afccf1cd.png?hl=bn)
None
, Lax
, বা Strict
হিসাবে চিহ্নিত করুন৷ SameSite ছাড়া ডিফল্ট আচরণে পরিবর্তন
ব্রাউজার সমর্থন
SameSite
অ্যাট্রিবিউটটি ব্যাপকভাবে সমর্থিত, কিন্তু এটি ব্যাপকভাবে গৃহীত হয়নি। অতীতে, SameSite
ছাড়া কুকি সেট করা ডিফল্ট সেগুলিকে সমস্ত প্রেক্ষাপটে পাঠানোর জন্য, যা ব্যবহারকারীদের CSRF এবং অনিচ্ছাকৃত তথ্য ফাঁসের ঝুঁকিতে ফেলে। ডেভেলপারদের তাদের অভিপ্রায় জানাতে এবং ব্যবহারকারীদের নিরাপদ অভিজ্ঞতা প্রদান করতে উৎসাহিত করতে, IETF প্রস্তাব, ক্রমবর্ধমান ভাল কুকিজ দুটি মূল পরিবর্তনগুলি তুলে ধরে:
-
SameSite
অ্যাট্রিবিউট ছাড়া কুকিগুলিকেSameSite=Lax
হিসাবে বিবেচনা করা হয়। -
SameSite=None
এর সাথে কুকিজকে অবশ্যইSecure
উল্লেখ করতে হবে, যার অর্থ তাদের একটি নিরাপদ প্রসঙ্গ প্রয়োজন।
এই দুটি পরিবর্তনই পিছনের দিকে-সামঞ্জস্যপূর্ণ ব্রাউজারগুলির সাথে সামঞ্জস্যপূর্ণ যেগুলি SameSite
অ্যাট্রিবিউটের পূর্ববর্তী সংস্করণটি সঠিকভাবে প্রয়োগ করেছে, সেইসাথে যে ব্রাউজারগুলি আগের SameSite
সংস্করণগুলি সমর্থন করে না। তারা কুকি আচরণ এবং উদ্দিষ্ট ব্যবহার সুস্পষ্ট করে ব্রাউজারের ডিফল্ট আচরণের উপর ডেভেলপারদের নির্ভরতা হ্রাস করার উদ্দেশ্যে তৈরি। যেকোন ক্লায়েন্ট যারা SameSite=None
এটিকে উপেক্ষা করবে না।
SameSite=Lax
আপনি যদি SameSite
অ্যাট্রিবিউট উল্লেখ না করেই একটি কুকি পাঠান, তাহলে ব্রাউজার সেই কুকিটিকে SameSite=Lax
এ সেট করার মতো আচরণ করে। আমরা এখনও ব্রাউজার জুড়ে আপনার ব্যবহারকারীর অভিজ্ঞতাকে আরও সামঞ্জস্যপূর্ণ করতে স্পষ্টভাবে SameSite=Lax
সেট করার পরামর্শ দিই।
SameSite=None
নিরাপদ হতে হবে না
আপনি যখন SameSite=None
ব্যবহার করে ক্রস-সাইট কুকিজ তৈরি করেন, তখন আপনাকে অবশ্যই সেগুলিকে Secure
সেট করতে হবে যাতে ব্রাউজার গ্রহণ করতে পারে:
Set-Cookie: widget_session=abc123; SameSite=None; Secure
আপনি Chrome 76-এর মতো এই আচরণ পরীক্ষা করতে পারেন about://flags/#cookies-without-same-site-must-be-secure
সক্রিয় করে, এবং Firefox 69 থেকে network.cookie.sameSite.noneRequiresSecure
এ about:config
সেট করে।
আমরা যত তাড়াতাড়ি সম্ভব Secure
বিদ্যমান কুকিজ আপডেট করার পরামর্শ দিই। আপনি যদি আপনার সাইটে তৃতীয় পক্ষের সামগ্রী সরবরাহ করে এমন পরিষেবাগুলির উপর নির্ভর করেন তবে নিশ্চিত করুন যে আপনার পরিষেবা প্রদানকারী তাদের কুকিগুলি আপডেট করে এবং আপনার সাইটে যে কোনও স্নিপেট বা নির্ভরতা আপডেট করে তা নিশ্চিত করুন যে এটি নতুন আচরণ ব্যবহার করে।
SameSite
কুকি রেসিপি
SameSite=None
এবং ব্রাউজারের আচরণের পার্থক্যগুলি সফলভাবে পরিচালনা করতে আপনার কুকিজ আপডেট করার বিষয়ে আরও বিশদ বিবরণের জন্য, ফলো-আপ নিবন্ধ, SameSite কুকি রেসিপি দেখুন।
লিলি চেন, মাল্টে উবিএল, মাইক ওয়েস্ট, রব ডডসন, টম স্টেইনার এবং বিবেক শেখরের অবদান এবং প্রতিক্রিয়ার জন্য আন্তরিক ধন্যবাদ।
আনস্প্ল্যাশে পিলে-রিন প্রিসকের কুকি হিরো ছবি