কুকি বৈশিষ্ট্য, কুকি বৈশিষ্ট্য

যখন কোনো ওয়েব সার্ভার কোনো রিসোর্সের অনুরোধে সাড়া দেয়, তখন সার্ভারটি তার প্রতিক্রিয়ার সাথে একটি Set-Cookie হেডার অন্তর্ভুক্ত করতে পারে। এই হেডারটি আপনার ব্রাউজারকে একটি কুকি সংরক্ষণ করতে নির্দেশ দেয়।

উদাহরণস্বরূপ: Set-Cookie:cat=tabby .

কুকির নাম ও মান দেওয়ার পাশাপাশি, কুকি সেট হবে কি না এবং কখন তার মেয়াদ শেষ হবে তা নিয়ন্ত্রণ করার জন্য Set-Cookie অ্যাট্রিবিউট অন্তর্ভুক্ত করতে পারে। কুকি অ্যাট্রিবিউটগুলো সেমিকোলন দ্বারা পৃথক করা হয়। উদাহরণস্বরূপ:

    Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;

এই নথিতে কুকির সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্যগুলো ব্যাখ্যা করা হয়েছে:

HTTP কুকি ব্যবহার করে কুকি অ্যাট্রিবিউটগুলো আরও প্রযুক্তিগতভাবে ব্যাখ্যা করা হয়েছে।

সুরক্ষিত

যদি কোনো Set-Cookie হেডারে Secure অন্তর্ভুক্ত থাকে, তাহলে কুকিটি শুধুমাত্র HTTPS প্রোটোকল ব্যবহার করে করা এনক্রিপ্টেড অনুরোধের সাথেই যুক্ত হবে; HTTP অনুরোধে কুকিটি যুক্ত হবে না। এটি মধ্যস্থতাকারী আক্রমণ (intermediary attacks) প্রতিরোধ করতে সাহায্য করতে পারে, যেখানে একজন আক্রমণকারী গোপনে ব্রাউজার এবং সার্ভারের মধ্যকার যোগাযোগে হস্তক্ষেপ করে তথ্য পাচার করে এবং প্রয়োজনে তা পরিবর্তনও করে।

HTTPOnly

যদি কোনো Set-Cookie হেডারে HTTPOnly অন্তর্ভুক্ত থাকে, তাহলে জাভাস্ক্রিপ্ট document.cookie মতো কমান্ড ব্যবহার করে কুকিটি অ্যাক্সেস করতে পারে না। এটি কুকিকে লক্ষ্য করে চালানো নির্দিষ্ট কিছু ধরনের আক্রমণ থেকে সুরক্ষা দিতে সাহায্য করে।

একই সাইট

আপনি যে সাইটটি দেখছেন, তার থেকে ভিন্ন কোনো সাইট থেকে কোনো রিসোর্সের জন্য করা অনুরোধকে ক্রস-সাইট রিকোয়েস্ট বলা হয়। ক্রস-সাইট রিকোয়েস্টের জবাবে সেট করা কুকি হলো থার্ড-পার্টি কুকি

SameSite অ্যাট্রিবিউটটি নিয়ন্ত্রণ করে যে কোনো অনুরোধে তৃতীয় পক্ষের কুকি অন্তর্ভুক্ত করা হবে কি না। এর তিনটি সম্ভাব্য মান রয়েছে: Strict , Lax , বা None

আরও জানুন: থার্ড-পার্টি কুকি কী?

কঠোর

কুকিটি শুধুমাত্র সেই সাইটের কোনো পেজ থেকে করা অনুরোধের জবাবেই পাঠানো হবে। উদাহরণস্বরূপ: ধরুন, একজন ব্যবহারকারী cats.example সাইটটি ভিজিট করলেন এবং তার জন্য SameSite=Strict অ্যাট্রিবিউটসহ একটি কুকি সেট করা হলো। এরপর, ব্যবহারকারী অন্য একটি সাইটে গেলেন এবং cats.example এর কোনো একটি পেজের লিঙ্কে ক্লিক করলেন। সেক্ষেত্রে, সেট করা কুকিটি সেই অনুরোধে অন্তর্ভুক্ত হবে না।

ল্যাক্স

এটি Strict এর মতোই কাজ করে, তবে পার্থক্য হলো, ব্যবহারকারী যখন কুকিটির উৎস সাইটের কোনো লিঙ্কে ক্লিক করে, তখন ব্রাউজারটি কুকিটি অন্তর্ভুক্ত করে। (আগের Strict উদাহরণে, ব্যবহারকারী যখন cats.example এর লিঙ্কে ক্লিক করত, তখন কুকিটি অন্তর্ভুক্ত হতো ।) যদি Set-Cookie হেডারে কোনো SameSite অ্যাট্রিবিউট অন্তর্ভুক্ত না থাকে, তাহলে Lax হলো ডিফল্ট।

কোনোটিই না

কোনো সীমাবদ্ধতা নেই: অনুরোধটি ক্রস-সাইট হোক বা না হোক, কুকিটি তার সাথে অন্তর্ভুক্ত হবে। SameSite=None করা থাকলে, কুকিটিতে অবশ্যই Secure অ্যাট্রিবিউটটিও থাকতে হবে।

বিভক্ত

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

উদাহরণস্বরূপ: কল্পনা করুন যে ওয়েবসাইট A এবং ওয়েবসাইট B উভয়ই ওয়েবসাইট C থেকে একটি আইফ্রেম অন্তর্ভুক্ত করেছে। ওয়েবসাইট A-এর আইফ্রেম দ্বারা সেট করা একটি পার্টিশনড কুকি ওয়েবসাইট B-এর আইফ্রেম দ্বারা অ্যাক্সেস করা যায় না: AC কুকিটি BC কুকি থেকে আলাদা।

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

Partitioned অ্যাট্রিবিউটযুক্ত কুকিগুলো CHIPS (Cookies Having Independent Partitioned State) নামে পরিচিত।

পার্টিশন করা কুকিগুলিতে অবশ্যই Secure অ্যাট্রিবিউট থাকতে হবে।

আরও জানুন: কুকির স্বাধীন পার্টিশন অবস্থা

মেয়াদ শেষ এবং সর্বোচ্চ বয়স

আপনি একটি Expires তারিখ ও সময়, অথবা সেকেন্ডে একটি Max-Age নির্দিষ্ট করতে পারেন, যার পরে কুকিটি মুছে ফেলা হবে এবং আর পাঠানো হবে না। উদাহরণস্বরূপ:

  • Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
  • Set-Cookie:cat=tabby; Max-Age=86400

আপনি যদি Max-Age বা Expires অ্যাট্রিবিউট নির্দিষ্ট না করেন, তাহলে বর্তমান সেশন শেষ হয়ে গেলে কুকিটি মুছে যাবে। এই ধরনের কুকিকে কখনও কখনও সেশন কুকি বলা হয়।

ডোমেইন

যদি কোনো Set-Cookie হেডারে Domain অ্যাট্রিবিউট থাকে, তাহলে নির্দিষ্ট ডোমেইন এবং এর যেকোনো সাবডোমেইনে করা অনুরোধের সাথে কুকিটি অন্তর্ভুক্ত হবে।

যদি কোনো Set-Cookie হেডারে Domain অ্যাট্রিবিউট না থাকে, তাহলে সাবডোমেইনের অনুরোধের সাথে কুকিটি অন্তর্ভুক্ত করা হবে না।

অন্য কথায়, Domain অ্যাট্রিবিউট অন্তর্ভুক্ত করলে ডোমেইনের সীমাবদ্ধতা কমে যায়

উদাহরণস্বরূপ, cats.example ওয়েবসাইট থেকে প্রাপ্ত একটি প্রতিক্রিয়া:

  • Set-Cookie:cat=tabby
    কুকিটি শুধুমাত্র cats.example এর অনুরোধের সাথেই অন্তর্ভুক্ত করা হবে।
  • Set-Cookie:cat=tabby; Domain=cats.example
    cats.example এর জন্য করা অনুরোধের সাথে, এবং fluffy.cats.example বা user.assets.cats.example এর মতো সাবডোমেনের রিসোর্সের জন্য করা যেকোনো অনুরোধের সাথেও কুকিটি অন্তর্ভুক্ত করা হবে।

পথ

যদি কোনো Set-Cookie রেসপন্স হেডারে একটি Path অ্যাট্রিবিউট অন্তর্ভুক্ত থাকে, তাহলে সেট করা কুকিটি শুধুমাত্র সেইসব URL-এ (যে সাইট থেকে কুকিটি সেট করা হয়েছে!) পাঠানো রিকোয়েস্টের ক্ষেত্রেই অন্তর্ভুক্ত হবে, যেগুলো Path ভ্যালুটির সাথে মেলে।

উদাহরণস্বরূপ:

  • Set-Cookie:cat=tabby; Path=/articles
    যে কোনো URL পাথ যা /articles দিয়ে শুরু হয়, তার অনুরোধের জন্য কুকিটি অন্তর্ভুক্ত করা হবে:
    https://cats.example/articles/tabby/index.html
    https://cats.example/articles/breeds/tabby/index.html
    https://cats.example/images/tabby.jpg
    https://cats.example/en/articles/tabby/index.html
  • Set-Cookie:cat=tabby; Path=/
    সাইটের যেকোনো ইউআরএল-এ করা সমস্ত অনুরোধের সাথে কুকিটি অন্তর্ভুক্ত থাকবে।

যদি কোনো Set-Cookie রেসপন্স হেডারে Path ভ্যালু না থাকে, তাহলে কুকিটি শুধুমাত্র একই ডিরেক্টরির রিকোয়েস্টের সাথেই অন্তর্ভুক্ত হবে। উদাহরণস্বরূপ, ধরা যাক cats.example/images/tabby.jpg. ফাইলের জন্য করা একটি রিকোয়েস্টের জবাবে cat=tabby কুকি সেট করা হয়েছে। যদি কোনো Path সেট করা না থাকে, তাহলে কুকিটি শুধুমাত্র cats.example/images ডিরেক্টরির ভেতরের ফাইলগুলোর জন্য করা রিকোয়েস্টের সাথেই অন্তর্ভুক্ত হবে।

ডেমো

  • 1pc.glitch.me : ফার্স্ট-পার্টি কুকি ডেমো
  • 3pc.glitch.me : তৃতীয় পক্ষের কুকি ডেমো

সরঞ্জাম

আরও জানুন