এইচটিটিপি কুকিজ পোর্ট নির্দিষ্ট?


355

একটি মেশিনে আমার দুটি HTTP পরিষেবা চলছে services আমি কেবল জানতে চাই যে তারা তাদের কুকিগুলি ভাগ করে কিনা বা ব্রাউজার দুটি সার্ভার সকেটের মধ্যে পার্থক্য করে কিনা।

উত্তর:


329

বর্তমান কুকি স্পেসিফিকেশনটি আরএফসি 6265 , যা আরএফসি 2109 এবং আরএফসি 2965 (উভয় আরএফসি এখন "orতিহাসিক" হিসাবে চিহ্নিত হয়েছে) প্রতিস্থাপন করে এবং কুকিজের আসল-বিশ্বের ব্যবহারের বাক্য গঠনটি আনুষ্ঠানিক করে। এটি পরিষ্কারভাবে বলে:

  1. ভূমিকা

...

Reasonsতিহাসিক কারণে কুকিগুলিতে বেশ কয়েকটি সুরক্ষা এবং গোপনীয়তা অনুদান রয়েছে। উদাহরণস্বরূপ, একটি সার্ভার ইঙ্গিত দিতে পারে যে প্রদত্ত কুকি "সুরক্ষিত" সংযোগের জন্য তৈরি, তবে সিকিউর অ্যাট্রিবিউট সক্রিয় নেটওয়ার্ক আক্রমণকারীর উপস্থিতিতে সততা সরবরাহ করে না। একইভাবে, প্রদত্ত হোস্টের কুকিজ সেই হোস্টের সমস্ত পোর্ট জুড়ে ভাগ করা হয়, যদিও ওয়েব ব্রাউজারগুলির দ্বারা ব্যবহৃত "একই-উত্স নীতি" বিভিন্ন পোর্টের মাধ্যমে প্রাপ্ত সামগ্রীকে আলাদা করে দেয়।

এবং আরো:

8.5। দুর্বল গোপনীয়তা

কুকিগুলি বন্দর দিয়ে বিচ্ছিন্নতা সরবরাহ করে না । যদি একটি কোর্ট কোনও পোর্টে চলমান কোনও পরিষেবা দ্বারা কুকি পাঠযোগ্য হয় তবে একই সার্ভারের অন্য একটি পোর্টে চলমান পরিষেবা দ্বারাও কুকি পাঠযোগ্য। যদি কোনও কুকি কোনও একটি বন্দরে কোনও পরিষেবা দ্বারা লিখনযোগ্য হয় তবে কুকি একই সার্ভারের অন্য একটি পোর্টে চলমান পরিষেবা দ্বারাও লিখনযোগ্য। এই কারণে, সার্ভারগুলি উভয়ই একই হোস্টের বিভিন্ন পোর্টে পারস্পরিক অবিশ্বাস্য পরিষেবা চালানো উচিত নয় এবং সুরক্ষা সংবেদনশীল তথ্য সংরক্ষণ করতে কুকিজ ব্যবহার করবে।


129

RFC2965 3.3.1 অনুসারে (যা ব্রাউজারগুলি অনুসরণ করতে পারে বা নাও পারে), যদি না পোর্টটি portপ্যারামিটারের মাধ্যমে স্পষ্টভাবে নির্দিষ্ট করা থাকেSet-Cookie হেডারের কুকিজ কোনও বন্দরে প্রেরণ বা নাও হতে পারে।

গুগলের ব্রাউজার সুরক্ষা হ্যান্ডবুক বলেছেন: ডিফল্টরূপে কুকি স্কোপটি বর্তমান হোস্ট নামের সমস্ত ইউআরএল-তে সীমাবদ্ধ - এবং বন্দর বা প্রোটোকল তথ্যের সাথে আবদ্ধ নয়। এবং কিছু লাইন পরে কুকিজ কেবলমাত্র একটি ডিএনএস নামে সীমাবদ্ধ করার উপায় নেই [...] তেমনি, নির্দিষ্ট বন্দরটিতে সেগুলি সীমাবদ্ধ করার কোনও উপায় নেই। (এছাড়াও, মনে রাখবেন, যে আই ই তার একই বংশোদ্ভূত নীতি মধ্যে না ফ্যাক্টর পোর্ট নাম্বার আছে এ সব ।)

সুতরাং এখানে কোনও সংজ্ঞায়িত আচরণের উপর নির্ভর করা নিরাপদ বলে মনে হয় না।


75
আরএফসি 6265 , যা আরএফসি 2965 কে প্রতিস্থাপন করে, শিরোনামের Portপ্যারামিটারটি সরিয়ে দেয় Set-Cookie(কারণ বাস্তবে এটি বাস্তবে কেউ ব্যবহার করেনি), এবং এটি খুব স্পষ্ট করে তোলে যে একই হোস্টের কুকিগুলি বন্দরগুলির দ্বারা আলাদা নয়।
রেমি লিউউ

5
আইই 9 এমনকি
কুকিকেও

3
এমন কোনও ব্রাউজার রয়েছে যা এখনও তার কুকিজের এসওপিতে পোর্ট বিবেচনা করছে?
বার্টুজ

5
ক্রোম এমনকি কুকি সেট করবে না যদি এতে ডোমেনে কোনও পোর্ট থাকে।
পিম হিজডেন

76

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

আমার ল্যাপটপে দুটি পরিষেবা চলছে (একটি পোর্ট 3000 এবং অন্যটি 4000- এ)। আমি কখন লাফিয়ে উঠতাম ( http://localhost:3000এবংhttp://localhost:4000 ) এর , ক্রোম একই কুকিতে চলে যেত, প্রতিটি পরিষেবা কুকি বুঝতে পারে না এবং একটি নতুন তৈরি করে।

আমি খুঁজে পেয়েছি যে আমি যদি অ্যাক্সেস করেছি http://localhost:3000এবংhttp://127.0.0.1:4000 , সমস্যাটি চলে গেছে, যেহেতু ক্রোম লোকালহোস্টের জন্য একটি কুকি এবং 127.0.0.1 এর জন্য রেখেছিল।

আবার, কোনও ব্যক্তি এই মুহুর্তে যত্ন নিতে পারে না তবে এটি আমার পরিস্থিতির পক্ষে সহজ এবং সহায়ক ছিল।


1
হ্যাঁ, কারণ কুকিগুলি হোস্ট / ডোমেন নামের সাথে সম্পর্কিত, সুতরাং একটি কুকি অনুলিপি localhostভাগ করে ভাগ করে নিতে পারে না 127.0.0.1। তবে পোর্ট নির্বিশেষে একই হোস্ট / ডোমেনে কুকিগুলি শেরে যায়।
রেমি লেবুউ

3
অবশ্যই তারা। আমি (এবং সম্ভবত আরও মিলিয়ন অন্যান্য বিকাশকারী) সারাক্ষণ পরীক্ষার জন্য লোকালহোস্ট ব্যবহার করি। যোগ করা বন্দরটি কোনও পার্থক্য না করলে লোকালহোস্ট: 8080
ডেভিড বালেক

53
এছাড়াও, আপনি 127.0.0.1, 127.0.0.2, 127.0.0.3 ইত্যাদি ব্যবহার করতে পারেন ... সেগুলির অর্থ লোকালহোস্ট।
ডেভিড বালাইচ

3
আমি এটি উত্সাহিত করতে পারি না কারণ এটি প্রশ্নের উত্তর দেয় না তবে এটি দুর্দান্ত টিপ, ধন্যবাদ!
মার্টিন টি।

2
আপনি যদি আপনার হোস্ট ফাইলটি (/ ইত্যাদি / ইউনিক্সে হোস্টগুলি) সম্পাদনা করতে রাজি হন তবে লোকালহোস্টের জন্য আপনার যতটা অর্থপূর্ণ নাম থাকতে পারে।
সিলাস এস ব্রাউন

20

এটি কুকি এসওপি (একই উত্স নীতি) এর একটি বড় ধূসর অঞ্চল।

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

একই আইপি এর জন্য 2 টি ডোমেন নাম এবং কুকিজের জন্য পোর্ট নম্বরের উপর নির্ভর না করা আরও ভাল উপায় approach


9
এটি আর ধূসর অঞ্চল নয়। আরএফসি 6265 , যা বর্তমান কুকি স্ট্যান্ডার্ড, বিভিন্ন পোর্ট ব্যবহার করে একই হোস্টে কুকি আলাদা করার ক্ষমতা সরিয়ে কেবল এ সম্পর্কে কোনও বিভ্রান্তি দূর করে।
রেমি Lebeau

18

সমস্যাটি ঘুরে দেখার বিকল্প উপায় হ'ল সেশন কুকির নাম বন্দর সম্পর্কিত করা। উদাহরণ স্বরূপ:

  • 8080 পোর্টে চলমান সার্ভারটির জন্য mysession8080
  • 8000 পোর্টে চলমান সার্ভারটির জন্য mysession8000

আপনার কোডটি ওয়েব সার্ভার কনফিগারেশন অ্যাক্সেস করতে পারে আপনার সার্ভারটি কোন পোর্ট ব্যবহার করে তা নির্ধারণ করতে এবং সেই অনুসারে কুকির নাম দিন।

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

কুকির নামে সঠিক পোর্ট নম্বর থাকা দরকার নেই তবে এটি আরও সুবিধাজনক।

সাধারণভাবে, কুকির নামটি আপনি যে সার্ভারের উদাহরণটি ব্যবহার করেন তা নির্দিষ্ট করে অন্য কোনও প্যারামিটার এনকোড করতে পারে, তাই এটি সঠিক প্রসঙ্গে ডিকোড করা যায়।


9

আইই 8-তে, কুকিগুলি (কেবল লোকালহোস্টের বিরুদ্ধে যাচাই করা) পোর্টগুলির মধ্যে ভাগ করা হয়। এফএফ 10 এ তারা নেই।

আমি এই উত্তরটি পোস্ট করেছি যাতে পাঠকদের প্রতিটি দৃশ্যের পরীক্ষার জন্য কমপক্ষে একটি কংক্রিট বিকল্প থাকে।


4

আমি একই মেশিনে দুটি ভিন্ন জ্যাঙ্গো অ্যাপ্লিকেশন চলমান (এবং ডিবাগ করার চেষ্টা করে) একই ধরণের সমস্যার মুখোমুখি হয়েছি।

আমি এই আদেশগুলি দিয়ে তাদের চালাচ্ছিলাম:

./manage.py runserver 8000
./manage.py runserver 8001

আমি যখন প্রথমটিতে এবং তারপরে দ্বিতীয়টিতে লগইন করতাম তখন আমি সর্বদা প্রথমটি লগ আউট করেছিলাম এবং বিপরীত দিকে।

আমি আমার / ইত্যাদি / হোস্টগুলিতে এটি যুক্ত করেছি

127.0.0.1    app1
127.0.0.1    app2

তারপরে আমি এই আদেশগুলি দিয়ে দুটি অ্যাপ্লিকেশন শুরু করেছি:

./manage.py runserver app1:8000
./manage.py runserver app2:8001

সমস্যা সমাধান :)


4
আপনি সম্ভবত 127.0.0.1:8000একটির জন্য, এক localhost:8000সেকেন্ডের জন্য এবং সম্ভবত ::1:8000(সম্ভবত [::1]:8080) কোনও তৃতীয়টির জন্য হোস্ট ফাইলটি স্পর্শ না করে ব্যবহার করতে পারেন।
ট্র্যাভিস ওয়াটসন

1
আপনি এটিকে এক লাইনে রাখতে পারেন:::1 app1 app2 app3 app4 app5 appN
অ্যারোসন

0

এটি .চ্ছিক।

পোর্টটি নির্দিষ্ট করা যেতে পারে তাই কুকিজ পোর্ট নির্দিষ্ট হতে পারে। এটি প্রয়োজনীয় নয়, ওয়েব সার্ভার / অ্যাপ্লিকেশনটির এটি অবশ্যই যত্ন করা উচিত।

উত্স: জার্মান উইকিপিডিয়া নিবন্ধ , আরএফসি 2109 , অধ্যায় 4.3.1


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.