दिलचस्प पोस्ट
कैसे जांच करें कि "android.permission.PACKAGE_USAGE_STATS" की अनुमति दी जाती है? Laravel 5 में सभी दृश्यों को डेटा कैसे प्राप्त करें? कॉफी-बाइट्स कोड तह का उपयोग कैसे करें एचटीपीएस कनेक्शन एंड्रॉइड PHP का उपयोग करते हुए दो तिथियों के बीच अंतर की गणना कैसे करें? क्यों मैं <bits / stdc ++। H> शामिल नहीं होना चाहिए? एएसपी.नेट एमवीसी सीएमएस के लिए डेटाबेस से गतिशील रूट आईपैड सफारी – कीबोर्ड को गायब बनाओ जस्पर रिपोर्ट्स के साथ JVM के लिए फ़ॉन्ट उपलब्ध नहीं है मैं विंडोज़ में बाल प्रक्रियाओं को स्वचालित रूप से कैसे नष्ट कर सकता हूं? JQuery के नाम से क्लास का नाम प्राप्त करें क्रोम को स्व-हस्ताक्षरित स्थानीयहोस्ट प्रमाणपत्र प्राप्त करना AngularJS – एनजी-मॉडल का उपयोग करने वाला निर्देश बनाएं कोड से androidManifest के "debuggable" मान हो रहा है? एंड्रॉइड स्टूडियो प्रोजेक्ट का निर्माण करते समय स्टैकट्र्रेस या डीबग विकल्प कैसे जोड़ें

क्या HTTP कुकीज विशिष्ट हैं?

मेरे पास एक मशीन पर चलने वाली दो HTTP सेवाएं हैं मैं सिर्फ जानना चाहता हूं कि क्या वे अपनी कुकीज साझा करते हैं या ब्राउज़र दो सर्वर सॉकेट्स के बीच अंतर करता है या नहीं।

Solutions Collecting From Web of "क्या HTTP कुकीज विशिष्ट हैं?"

वर्तमान कुकी विनिर्देश आरएफसी 6265 है , जो आरएफसी 210 9 और आरएफसी 2965 (दोनों आरएफसी को अब "ऐतिहासिक" कहा गया है) को बदलता है और कुकीज़ के वास्तविक दुनिया उपयोगों के लिए वाक्यविन्यास को औपचारिक रूप में पेश करता है। यह स्पष्ट रूप से बताता है:

  1. परिचय

ऐतिहासिक कारणों के लिए, कुकीज़ में कई सुरक्षा और गोपनीयता infelicities शामिल हैं उदाहरण के लिए, एक सर्वर इंगित कर सकता है कि दिया गया कुकी "सुरक्षित" कनेक्शन के लिए है, लेकिन सिक्योरिटी विशेषता एक सक्रिय नेटवर्क हमलावर की उपस्थिति में अखंडता प्रदान नहीं करती है। इसी प्रकार, दिए गए होस्ट के लिए कुकीज़ उस मेजबान पर सभी बंदरगाहों में साझा की जाती हैं, भले ही वेब ब्राउज़र द्वारा उपयोग की जाने वाली "समान-मूल नीति" अलग-अलग बंदरगाहों द्वारा प्राप्त की गई सामग्री को अलग करती है।

और भी:

8.5। कमजोर गोपनीयता

कूकीज बंदरगाह द्वारा अलगाव प्रदान नहीं करते हैं अगर एक कुकी को एक बंदरगाह पर चलने वाली सेवा से पठनीय है, तो कुकी उसी सर्वर के दूसरे पोर्ट पर चलने वाली सेवा द्वारा भी पठनीय है। यदि एक कुकी को एक बंदरगाह पर किसी सेवा द्वारा लिखे जाने योग्य है, तो कुकी उसी सर्वर के दूसरे पोर्ट पर चलने वाली सेवा द्वारा भी लिखने योग्य है। इस कारण से, सर्वर दोनों एक ही मेजबान के विभिन्न बंदरगाहों पर पारस्परिक रूप से अविश्वसनीय सेवाओं को चलाने और सुरक्षा संवेदनशील जानकारी संग्रहीत करने के लिए कुकीज़ का उपयोग नहीं करना चाहिए।

आरएफसी 2 9 65 3.3.1 के अनुसार (जो ब्राउज़रों द्वारा पीछा नहीं किया जा सकता है या हो सकता है), जब तक पोर्ट Set-Cookie हैडर के port पैरामीटर के जरिए स्पष्ट रूप से निर्दिष्ट नहीं किया जाता है, तो कुकीज किसी भी पोर्ट पर या शायद नहीं भेजी जा सकती है

Google की ब्राउज़र सुरक्षा पुस्तिका कहती है: डिफ़ॉल्ट रूप से, कुकी का दायरा मौजूदा होस्ट नाम पर सभी यूआरएल तक ही सीमित है – और बंदरगाह या प्रोटोकॉल की जानकारी तक सीमित नहीं है और कुछ पंक्तियां बाद में केवल एक ही DNS नाम पर कुकीज़ को सीमित करने का कोई तरीका नहीं है […] इसी तरह, उन्हें एक विशिष्ट पोर्ट के लिए सीमित करने का कोई रास्ता नहीं है (इसके अलावा, ध्यान रखें कि आईई पोर्ट नंबरों की अपनी समान मूल नीति में बिल्कुल भी कारक नहीं है।)

इसलिए यह किसी भी अच्छी तरह से परिभाषित व्यवहार पर भरोसा करने के लिए सुरक्षित नहीं लगता है।

यह वास्तव में एक पुराना सवाल है, लेकिन मैंने सोचा कि मैं एक वैकल्पिक हल जोड़ूंगा जिसे मैंने इस्तेमाल किया था।

मेरे लैपटॉप पर दो सेवाएं चल रही हैं (एक बंदरगाह 3000 पर और दूसरे को 4000 पर)। जब मैं ( http://localhost:3000 और http://localhost:4000 ) के बीच कूद http://localhost:4000 , तो क्रोम एक ही कुकी में गुजरती हैं, प्रत्येक सेवा कुकी को नहीं समझती और एक नया निर्माण नहीं करती।

मुझे पता चला कि अगर मैं http://localhost:3000 और http://127.0.0.1:4000 तक पहुंचा, तो समस्या दूर चली गई क्योंकि क्रोम ने स्थानीय होस्ट के लिए एक कुकी और 127.0.0.1 के लिए एक कुकी रखी थी।

दोबारा, कोई भी इस बिंदु पर ध्यान नहीं दे सकता है लेकिन यह मेरी स्थिति के लिए आसान और सहायक था।

यह कुकी एसओपी (समान मूल नीति) में एक बड़ा ग्रे क्षेत्र है।

सैद्धांतिक रूप से, आप डोमेन में पोर्ट संख्या निर्दिष्ट कर सकते हैं और कुकी साझा नहीं की जाएगी। व्यवहार में, यह कई ब्राउज़रों के साथ काम नहीं करता है और आप अन्य मुद्दों पर चलेंगे। इसलिए यह केवल तभी संभव है यदि आपकी साइट सामान्य लोगों के लिए नहीं है और आप इसे नियंत्रित कर सकते हैं कि किन ब्राउज़रों का उपयोग करना है।

बेहतर तरीका है कि एक ही आईपी के लिए 2 डोमेन नाम मिलें और कुकीज़ के लिए पोर्ट संख्या पर निर्भर न हो।

समस्या के चारों ओर जाने का एक वैकल्पिक तरीका, सत्र कुकी का नाम बंदरगाह से संबंधित होना है। उदाहरण के लिए:

  • पोर्ट 8080 पर चल रहे सर्वर के लिए mysession8080
  • पोर्ट 8000 पर चल रहे सर्वर के लिए mysession8000

यह पता लगाने के लिए कि आपका सर्वर किस पोर्ट का उपयोग करता है, और उसके अनुसार कुकी का नाम आपके वेबसर्वर कॉन्फ़िगरेशन तक पहुंच सकता है।

ध्यान रखें कि आपका एप्लिकेशन दोनों कुकीज प्राप्त करेगा, और आपको अपने पोर्ट के साथ मेल खाने वाले को अनुरोध करना होगा।

कुकी नाम में सटीक पोर्ट संख्या की आवश्यकता नहीं है, लेकिन यह अधिक सुविधाजनक है।

सामान्य तौर पर, कुकी का नाम आपके द्वारा उपयोग किए जाने वाले सर्वर उदाहरण के लिए किसी भी अन्य पैरामीटर को सांकेतिकृत कर सकता है, इसलिए इसे सही संदर्भ से डीकोड किया जा सकता है।

आईई 8 में, कुकीज़ (स्थानीयहोस्ट के विरूद्ध सत्यापित) को बंदरगाहों के बीच साझा किया जाता है। एफएफ 10 में, वे नहीं हैं।

मैंने यह जवाब पोस्ट किया है ताकि प्रत्येक परिदृश्य के परीक्षण के लिए पाठकों के पास कम से कम एक ठोस विकल्प होगा।

मैं एक समान मशीन पर दो अलग-अलग Django अनुप्रयोगों को चलाने में एक समान समस्या का अनुभव कर रहा था (और डीबग करने की कोशिश कर रहा हूं)।

मैं इन आज्ञाओं के साथ उन्हें चला रहा था:

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

जब मैंने पहले एक में प्रवेश किया था और फिर दूसरे में मैंने हमेशा पहले और उपाध्यक्षों को लॉग आउट किया था।

मैंने इसे मेरे / etc / hosts पर जोड़ा था

 127.0.0.1 app1 127.0.0.1 app2 

फिर मैंने इन एप्स के साथ दो एप्स शुरू कर दिए:

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

समस्या सुलझ गयी 🙂

यह वैकल्पिक है

बंदरगाह निर्दिष्ट किया जा सकता है ताकि कुकीज विशिष्ट पोर्ट हो सकें यह आवश्यक नहीं है, वेब सर्वर / एप्लिकेशन को इसका ध्यान रखना चाहिए।

स्रोत: जर्मन विकिपीडिया लेख , आरएफसी 02 9 9 , अध्याय 4.3.1