SameSite কুকি ব্যাখ্যা করা হয়েছে

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

  • 51
  • 16
  • 60
  • 13

উৎস

প্রতিটি কুকিতে একটি কী-মূল্যের জোড়া রয়েছে এবং সেই সাথে অনেকগুলি বৈশিষ্ট্য রয়েছে যা সেই কুকিটি কখন এবং কোথায় ব্যবহার করা হবে তা নিয়ন্ত্রণ করে।

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 লেবেলযুক্ত
স্পষ্টভাবে একটি কুকির প্রসঙ্গটি None , Lax , বা Strict হিসাবে চিহ্নিত করুন৷

SameSite ছাড়া ডিফল্ট আচরণে পরিবর্তন

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

  • 80
  • 86
  • এক্স

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.noneRequiresSecureabout:config সেট করে এই আচরণটি পরীক্ষা করতে পারেন।

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

SameSite=None এবং ব্রাউজারের আচরণের পার্থক্যগুলি সফলভাবে পরিচালনা করতে আপনার কুকিজ আপডেট করার বিষয়ে আরও বিশদ বিবরণের জন্য, ফলো-আপ নিবন্ধ, SameSite কুকি রেসিপি দেখুন।

লিলি চেন, মাল্টে উবিএল, মাইক ওয়েস্ট, রব ডডসন, টম স্টেইনার এবং বিবেক শেখরের অবদান এবং প্রতিক্রিয়ার জন্য আন্তরিক ধন্যবাদ।

আনস্প্ল্যাশে পিলে-রিন প্রিসকের কুকি হিরো ছবি