সাবডোমেন এবং ডোমেনের মধ্যে কুকি ভাগ করুন


420

আমার দুটি প্রশ্ন আছে। আমি বুঝতে পারি যে আমি যদি .mydomain.comকুকিতে ডোমেনটি (অগ্রণী বিন্দু সহ) নির্দিষ্ট করে থাকি যা সমস্ত সাবডোমেনগুলি কুকি ভাগ করতে পারে।

( সাবডোমেন ছাড়া ) subdomain.mydomain.comতৈরি কোনও কুকি অ্যাক্সেস করতে পারবেন ?mydomain.comwww

পারি mydomain.com(ছাড়া wwwযদি তৈরি করা সাবডোমেন) কুকি অ্যাক্সেসের subdomain.mydomain.com?


3
হ্যাঁ আপনি পারবেন .. দয়া করে নীচের লিঙ্কটি দেখুন কোডগুরু.com
রাহুল জৈন


আপনি যদি এই প্রশ্নের এ বর্ণন দয়া করে করতে পারেন stackoverflow.com/questions/38351769/...
Jayavardhan Gange

1
@ adam0101 যদি ডোমেন এবং সাব ডোমেন বিভিন্ন সার্ভারে হোস্ট করা থাকে তবে কী হবে?
user3782114

3
@ user3782114, তারা বিভিন্ন সার্ভারে রয়েছে কিনা তাতে কিছু আসে যায় না। আমার ক্ষেত্রে, তারা কেবলমাত্র বিভিন্ন সার্ভারে ছিল না, তবে প্রতিটি ডোমেন একাধিক সার্ভারের মধ্যে লোড-ভারসাম্যযুক্ত ছিল। একটি জিনিস যা আমাদের কিছুটা ট্রিপ করেছিল তা হ'ল নিম্ন পরিবেশগুলি (দেব, পরীক্ষা, উট, ইত্যাদি) একই কুকিটি ভাগ করে নেওয়া শুরু করার পরেও আমরা তাদের নাম "ডিভ.সোরাইট.কম", "পরীক্ষার মতো রেখেছি। আওয়ারসাইট ডট কম ", ইত্যাদি। কৌতুকটি এখানে (কমপক্ষে নেট মধ্যে) প্রতিটি পরিবেশের জন্য আলাদা মেশিন কী তৈরি করা এবং এটি আপনার ওয়েবকনফাইগে সংরক্ষণ করা (প্রতিটি পরিবেশের জন্য আপনাকে কনফিগার রূপান্তরিত করে)।
adam0101

উত্তর:


653

2 টি ডোমেন mydomain.comএবং subdomain.mydomain.comকেবলমাত্র কুকিগুলি ভাগ করতে পারে যদি ডোমেইনের স্পষ্টভাবে Set-Cookieশিরোনামে নাম লেখা থাকে । অন্যথায়, কুকির সুযোগটি অনুরোধ হোস্টের মধ্যে সীমাবদ্ধ। (এটিকে "কেবলমাত্র হোস্ট-কুকি" হিসাবে উল্লেখ করা হয় See দেখুন হোস্ট কেবল কুকি কী? )

উদাহরণস্বরূপ, আপনি যদি নিম্নলিখিত শিরোনামটি থেকে পাঠান subdomain.mydomain.comতবে কুকিকে অনুরোধের জন্য প্রেরণ করা হবে না mydomain.com:

Set-Cookie: name=value

তবে আপনি যদি নিম্নলিখিতটি ব্যবহার করেন তবে এটি উভয় ডোমেনে ব্যবহারযোগ্য হবে:

Set-Cookie: name=value; domain=mydomain.com

এই কুকিটি মাইডোমাইন.কমের যে কোনও সাবডোমেনের জন্য নেস্টেড সাবডোমেনগুলি সহ পাঠানো হবে subsub.subdomain.mydomain.com

ইন বোঝায় যা RFC 2109 , একটি নেতৃস্থানীয় ডট ছাড়া একটি ডোমেইন বোঝানো এটি সাবডোমেন ব্যবহার করা যাবে না, এবং শুধুমাত্র একটি নেতৃস্থানীয় বিন্দু ( .mydomain.com), এটা একাধিক সাবডোমেন জুড়ে ব্যবহার করা (কিন্তু টপ লেভেল ডোমেইন সম্ভব হবে যাতে আপনি কি জিজ্ঞাসা করা হয়েছিল পুরানো অনুমান সম্ভব নয়)।

তবে, সমস্ত আধুনিক ব্রাউজারগুলি নতুন স্পেসিফিকেশন আরএফসি 6265 কে সম্মান করে এবং যে কোনও শীর্ষ বিন্দুটিকে উপেক্ষা করবে, এর অর্থ আপনি কুকি সাবডোমেনের পাশাপাশি শীর্ষ স্তরের ডোমেনেও ব্যবহার করতে পারবেন।

সংক্ষেপে, আপনি যদি উপরের দ্বিতীয় উদাহরণের মতো কুকি সেট করেন mydomain.comতবে এটি অ্যাক্সেসযোগ্য subdomain.mydomain.comএবং তদ্বিপরীত। এটি কুকিজের অনুমতি sub1.mydomain.comএবং sub2.mydomain.comভাগ করতেও ব্যবহার করা যেতে পারে ।

আরো দেখুন:


3
ধন্যবাদ; আমি বিন্দুর তাত্পর্য সম্পর্কে একটি নোট যুক্ত করেছি।
cmbuckley

2
কেন আপনি কেবল শীর্ষস্থানীয় রাখবেন না তা আমি বুঝতে পারি না। " পুরানো এবং নতুনের সাথে সর্বাধিক সামঞ্জস্যের জন্য ডোমেনে
অ্যালান ম্যাকডোনাল্ড

12
পুরানো স্ট্যান্ডার্ডে, একটি কুকিটি domain=.mydomain.comবেয়ার মাইডোমেন.কমের জন্য বৈধ নয়, সুতরাং দুটি আরএফসি একে অপরের সাথে সামঞ্জস্যপূর্ণ নয়।
cmbuckley

4
@ ফ্র্যাঙ্ক, হ্যাঁ আমি জানি। আমার মন্তব্যটি স্পষ্ট করে জানাতে হয়েছিল যে আমার প্রশ্নটি একটি ডোমেন এবং সাবডোমেনের মধ্যে কুকি ভাগ করার বিষয়ে ছিল, দুটি সাবডোমেনের মধ্যে নয়।
adam0101

3
এটি কোথায় রাখবেন তা সম্পর্কে আমি নিশ্চিত নই তাই আমি গৃহীত উত্তরের মন্তব্যগুলি বেছে নিচ্ছি। আমার লোকালহোস্টে উপরেরটি প্রমাণ করতে দীর্ঘ সময় এবং ব্যর্থ পরীক্ষাগুলি লাগল, যতক্ষণ না আমার কাছে ঘটেছিল যে লোকালহোস্টকে আমার নামে ডট দিয়ে কল করা উচিত। "লোকালহোস্ট.কম" বা এর মতো কিছু। তারপরে সমস্ত "সেট কুকিজ" আচরণগুলি এই উত্তরে এখানে লিখিত ব্যাখ্যা অনুসরণ করে শুরু করে। এটি আশা করা কারও সাহায্য করতে পারে।
Cesc

32

আমি নিশ্চিত না যে @ ক্যাম্বাকলে উত্তর পুরো ছবিটি দেখায়। আমি যা পড়ি তা হ'ল:

যদি না কুকির বৈশিষ্ট্য অন্যথায় নির্দেশ করে, কুকিটি কেবলমাত্র অরিজিনাল সার্ভারে ফিরে আসে (এবং উদাহরণস্বরূপ, কোনও সাবডোমেনগুলিতে নয়) এবং এটি বর্তমান সেশনের শেষে (ব্যবহারকারী এজেন্ট দ্বারা সংজ্ঞায়িত) সমাপ্ত হবে। ব্যবহারকারীর এজেন্টরা স্বীকৃত কুকি উপেক্ষা করে।

আরএফসি 6265

এছাড়াও

8.6.  Weak Integrity

   Cookies do not provide integrity guarantees for sibling domains (and
   their subdomains).  For example, consider foo.example.com and
   bar.example.com.  The foo.example.com server can set a cookie with a
   Domain attribute of "example.com" (possibly overwriting an existing
   "example.com" cookie set by bar.example.com), and the user agent will
   include that cookie in HTTP requests to bar.example.com.  In the
   worst case, bar.example.com will be unable to distinguish this cookie
   from a cookie it set itself.  The foo.example.com server might be
   able to leverage this ability to mount an attack against
   bar.example.com.

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

@Cmbuckley দ্বারা সরবরাহিত দুর্দান্ত কুকিজ পরীক্ষার সাইট / যারা আমার মতো তার উত্তরে এটি মিস করেছেন; উপরে স্ক্রোলিং এবং upvoting মূল্য:


4
এটি আমি যা বলছি তার সাথে একমত হতে দেখায়: আপনি যদি কোনও নির্দিষ্ট না করেন তবে domainকুকি কেবল অনুরোধ হোস্টের জন্য ব্যবহৃত হয়। এর অর্থ এই যে Set-Cookie: name=valueথেকে mydomain.comসাবডোমেন অনুরোধগুলি সহ পাঠানো হবে না। এই পরীক্ষার স্ক্রিপ্টের সাথেও একটি নাটক করুন ।
cmbuckley

@ ক্যাম্বাকলে, ঠিক আছে, আপনি যা বলেছেন তা সঠিক বলে মনে হচ্ছে। আমি আমার উত্তরটির উচ্চারণ করব। এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ।
আকস্তাদদিনভ

উল্লেখ করতে হবে, বিভাগটি 4.1.2 (প্রথম উদ্ধৃতি) আদর্শিক নয় ...
ভেলদা

cmbuckley লিঙ্কের জন্য ধন্যবাদ। এটি কীভাবে দ্রুত কাজ করে তা পরীক্ষা করে ভাল লাগছে।
ল্যাফফটোগ

22

এখানে ডিওএম কুকি এপিআই ( https://developer.mozilla.org/en-US/docs/Web/API/Docament/cookie ) ব্যবহার করে একটি উদাহরণ দেওয়া হয়েছে , যাতে আমরা নিজেরাই আচরণটি দেখতে পারি।

যদি আমরা নিম্নলিখিত জাভাস্ক্রিপ্ট কার্যকর করি:

document.cookie = "কী = মান"

এটি কার্যকর করার মতোই বলে মনে হচ্ছে:

document.cookie = "কী = মান; ডোমেন = mydomain.com"

কুকি কীটি ডোমেন মাইডোমেন.কম এ উপলব্ধ (কেবল) ।


এখন, আপনি যদি mydomain.com এ নিম্নলিখিত জাভাস্ক্রিপ্টটি কার্যকর করেন:

document.cookie = "কী = মান; ডোমেন = .mydomain.com"

কুকি কীটি মাইডোমেন.কম পাশাপাশি সাবডোমেন.মায়ডোমেন.কম-এ উপলব্ধ হয়ে ওঠে ।


অবশেষে, আপনি যদি সাবডোমেন.মায়ডোমেন.কম এ নিম্নলিখিত ব্যবহারের চেষ্টা করে থাকেন:

document.cookie = "কী = মান; ডোমেন = .mydomain.com"

কুকি কী কী সাবডোমেন.মায়ডোমেন.কমের কাছে উপলব্ধ রয়েছে ? আমি কিছুটা অবাক হয়েছিলাম যে এটি অনুমোদিত; আমি ধরে নিয়েছিলাম যে সাবডোমেনটি প্যারেন্ট ডোমেনে কোনও কুকি সেট করতে সক্ষম হবে তা সুরক্ষা লঙ্ঘন হবে।


1
httponlyআপনি যে কুকি তৈরি করছেন তার বিপরীতে কুকিজের আচরণের বর্ণনা দেওয়ার জন্য আলাদা আলাদা চশমা রয়েছে কিনা তা আমাকে বিস্মিত করে ।
adam0101

3
আপনার পোস্ট করা দস্তাবেজগুলি আপনার দেওয়া বিবৃতিগুলির সাথে একমত নয়। প্রথম 2 টি উদাহরণ সমতুল্য নয় (কোনও domainবৈশিষ্ট্য কুকিকে সাবডোমেনগুলি নিয়ে কাজ করে; এমন কোনও বৈশিষ্ট্য তা করে না)। শীর্ষস্থানীয় বিন্দুগুলিকে সেরা উপেক্ষা করা হয় এবং সক্রিয়ভাবে সবচেয়ে খারাপ সময়ে অবরুদ্ধ করা হয়।
cmbuckley

আপনি হোস্ট শিরোলেখের উপর নির্ভর করতে না চাইলে এটিই সেরা সমাধান। আমি এটি এবং এটির কার্যকারিতা যাচাই করেছি
সিজমন

14

দয়া করে প্রত্যেকে নোট করুন যে আপনি কোনও ডোমেনে সাবডোমেন থেকে কুকি সেট করতে পারেন।

(অনুরোধের জন্য প্রতিক্রিয়া পাঠানো subdomain.mydomain.com)

Set-Cookie: name=value; Domain=mydomain.com // GOOD

তবে আপনি একটি সাবডোমেনে একটি ডোমেন থেকে একটি কুকি সেট করতে পারবেন না

(অনুরোধের জন্য প্রতিক্রিয়া পাঠানো mydomain.com)

Set-Cookie: name=value; Domain=subdomain.mydomain.com // Browser rejects cookie

কেন?

স্পেসিফিকেশন অনুযায়ী আরএফসি 6265 বিভাগ 5.3.6 স্টোরেজ মডেল

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

এবং আরএফসি 6265 বিভাগ 5.1.3 ডোমেন ম্যাচিং

ডোমেন মিলছে

নিম্নলিখিত স্ট্যান্ডের কমপক্ষে একটি শর্ত যদি ধরে থাকে তবে একটি স্ট্রিং একটি প্রদত্ত ডোমেন স্ট্রিংয়ের সাথে মেলে:

  1. ডোমেন স্ট্রিং এবং স্ট্রিং অভিন্ন। (নোট করুন যে ডোমেন স্ট্রিং এবং স্ট্রিং উভয়ই এই মুহুর্তে ছোট আকারের ক্ষেত্রে স্বীকৃত হবে))

  2. নিম্নলিখিত সমস্ত শর্তাদি ধরে রাখে:

    • ডোমেন স্ট্রিং স্ট্রিংয়ের প্রত্যয়।

    • ডোমেন স্ট্রিংয়ের অন্তর্ভুক্ত না হওয়া স্ট্রিংয়ের শেষ অক্ষরটি একটি% x2E ("।") অক্ষর।

    • স্ট্রিংটি একটি হোস্টের নাম (যেমন, কোনও আইপি ঠিকানা নয়)।

সুতরাং "subdomain.mydomain.com" ডোমেইন "mydomain.com" এর সাথে মেলে, তবে "mydomain.com" "subdomain.mydomain.com" এর সাথে ডোমেন মেলে না

এই উত্তরটিও পরীক্ষা করে দেখুন ।


এটি আমার জন্য সবচেয়ে সহায়ক উত্তর ছিল।
টবি

3

উভয় ক্ষেত্রে হ্যাঁ এটি করতে পারে এবং এটি আইই এবং এজ উভয়ের জন্যই ডিফল্ট আচরণ।

অন্যান্য উত্তরগুলি মূল্যবান অন্তর্দৃষ্টি যোগ করে তবে ক্রোমের আচরণগুলি প্রধানত বর্ণনা করে। IE এর মধ্যে আচরণটি সম্পূর্ণ ভিন্ন note সিএমবকলির অত্যন্ত সহায়ক পরীক্ষামূলক স্ক্রিপ্টটি প্রমাণ করে যে ক্রোমে, (কোনও) ডোমেন নির্দিষ্ট না করা অবস্থায় কুকিগুলি রুট এবং সাবডোমেনের মধ্যে ভাগ হয় না। তবে আই-তে একই পরীক্ষা দেখায় যে তারা ভাগ করে নিয়েছে। এই আই কে কেস সিএমবাকলির www-or-not-www লিঙ্কে টেক-হোম বর্ণনার নিকটবর্তী। আমি এটি কেস হিসাবে জানি কারণ আমাদের কাছে এমন একটি সিস্টেম রয়েছে যা মূল এবং সাবডোমেন উভয় ক্ষেত্রেই বিভিন্ন সার্ভিস্টেক্যাক কুকি ব্যবহার করে। আইইতে এটির অ্যাক্সেস না করা এবং দু'টি সিস্টেমে লড়াই করে যার সেশন কুকি জিতবে যতক্ষণ না আমরা ক্যাশে উড়িয়ে দেই ততক্ষণ এগুলি সবই ঠিকঠাক হয়েছিল।


0

আপনি যদি লোকালহোস্টে কাজ করছেন তবে সাবধান! আপনি যদি নিজের কুকিকে জেএসে এভাবে সঞ্চয় করেন:

document.cookie = "key=value;domain=localhost"

এটি আপনার সাবডোমেনের মতো অ্যাক্সেসযোগ্য নাও হতে পারে sub.localhost। এই সমস্যাটি সমাধান করার জন্য আপনার ভার্চুয়াল হোস্ট ব্যবহার করা উচিত । উদাহরণস্বরূপ আপনি নিজের ভার্চুয়াল হোস্টটি এর সাথে কনফিগার করতে পারবেন ServerName localhost.comতারপরে আপনি নিজের কুকিটি আপনার ডোমেনে এবং সাবডোমেনে এইভাবে সংরক্ষণ করতে সক্ষম হবেন:

document.cookie = "key=value;domain=localhost.com"

-12

সহজ সমাধান

setcookie("NAME", "VALUE", time()+3600, '/', EXAMPLE.COM);

সেটকুকির 5 তম প্যারামিটার কুকি উপলভ্য (সাব) ডোমেনগুলি নির্ধারণ করে। এটিকে (EXAMPLE.COM) সেট করা এটি যে কোনও সাবডোমেনের জন্য উপলব্ধ করে (যেমন: SUBDOMAIN.EXAMPLE.COM)

তথ্যসূত্র: http://php.net/manual/en/function.setcookie.php


17
এই প্রশ্নটি পিএইচপি নির্দিষ্ট নয়, আমি মনে করি না এটি বৈধ হিসাবে যোগ্যতা অর্জন করে।
সার্জলেটর

1
সার্জিলারেটর, আমি কোনও প্রশ্ন করি না। আমি ওপিতে সাড়া দিচ্ছিলাম।
আইন 21

4
@ লেভস আমি বিশ্বাস করি সার্জলেটারের অর্থ ওপি'র প্রশ্নটি পিএইচপি নির্দিষ্ট নয় যদিও আপনার উত্তরটি পিএইচপি-কেবল সমাধান বলে মনে হচ্ছে, সুতরাং এটি ওপি-র প্রশ্নের যোগ্যতা অর্জন করবে না।
মেরাজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.