2008-11-24 6 views
22

मुझे कुकी के साथ दो अलग-अलग डोमेन के बीच एसएसओ जानकारी साझा करने की आवश्यकता है, क्या यह PHP में किया जा सकता है और कैसे?मैं दो अलग-अलग डोमेनों में कुकीज़ का उपयोग कैसे करूं?

+0

दोनों डोमेन एक ही वेबसर्वर में हैं? –

+0

जरूरी नहीं है। – danielrsmith

उत्तर

17

दोनों डोमेन पर, किसी अन्य छवि से खींची गई छवि या अन्य वेब तत्व रखें। उपयोगकर्ता एक्स को डोमेन ए पर मौजूद अन्य डोमेन को सूचित करने के लिए URL का उपयोग करें, और डोमेन बी को उस उपयोगकर्ता के साथ उस उपयोगकर्ता आईडी को अपने सिस्टम पर संबद्ध करने दें।

यह सही ढंग से करने के लिए थोड़ा जटिल है, लेकिन यदि आपको लगता है कि यह इसके माध्यम से बहुत अच्छा काम करेगा।

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

-Adam

+3

आपको कुछ एन्क्रिप्शन जोड़ना होगा और हमले को फिर से चलाने से बचाना होगा। आप ए और बी को एक रहस्य साझा करके ऐसा कर सकते हैं। –

+0

यह निर्भर करता है। यदि जानकारी कोई मूल्य नहीं है, तो इसकी कोई आवश्यकता नहीं है, लेकिन यदि आप कुछ महत्वपूर्ण साझा कर रहे हैं तो आपको प्रमाणीकरण, एन्क्रिप्शन इत्यादि शामिल करने की आवश्यकता है। ये जटिलता मामूली है, लेकिन चूंकि आप दोनों प्रणालियों को नियंत्रित करते हैं, यह नहीं है एक साझा रहस्य मुश्किल है। –

+0

यह मुश्किल नहीं है, लेकिन इसे माना जाना चाहिए। और उन यूआरआई को केवल एक बार बनाना न भूलें। –

1

आप नहीं, कुकीज़ एक डोमेन के लिए बाध्य कर रहे हैं। इस पर प्रतिबंध हैं और इसे क्रॉस साइट स्क्रिप्टिंग के रूप में जाना जाता है।

अब, आपकी समस्या के लिए कुछ मदद के लिए। आप क्या कर सकते हैं एक स्क्रिप्ट बनाएं जो उन्हें पुल करने में मदद करे।

आप अपनी दूसरी साइट के सभी लिंक को वैश्विक रूप से फिर से लिख सकते हैं, पहली साइट से कुकी जानकारी की आवश्यकता होगी।

आप साइट से सभी कुकीज़ को एक डेटाबेस में सहेज लेंगे जो वे दोनों पढ़ सकते हैं, फिर साइट-बी के सभी लिंक पर कुकी-आईडी क्वेरीस्ट्रिंग को प्रोग्रामेटिक रूप से जोड़ना, फिर आप कुकी आईडी और पुनः- कुकीज़ को नए डोमेन के नीचे सेट करें।

वास्तव में एक अच्छा PHP डेटाबेस अबास्ट्रक्शन लाइब्रेरी (PHP ADODB) है और इसमें सत्र साझा करने वाली प्लगइन है जो यह सब बहुत आसान बनाता है।

1

ठीक है, यदि आपके डोमेन केवल अलग सबडोमेन हैं तो आप .yourdomain.com कुकी बनाकर इसे आसान तरीके से कर सकते हैं। फिर कुकी को सभी सबडोमेन में सभी अनुरोधों के साथ पास किया जाता है।

यदि आप विभिन्न डोमेन के बीच कुकीज़ साझा करना चाहते हैं तो यह इतना आसान नहीं है क्योंकि ब्राउज़र इसे सुरक्षा जोखिम के रूप में मानते हैं।

सटीक उदाहरण क्या है?

Google Analytics और अन्य ट्रैकिंग छवियों जैसे कुछ सॉफ़्टवेयर के मामले में आपको P3P हेडर का उपयोग करने के लिए मजबूर होना पड़ सकता है ताकि ब्राउजर को यह पता चल सके कि आपको अपनी कुकी भेजते समय सुरक्षा की परवाह नहीं है। फिर छवि का अनुरोध करने वाला ब्राउज़र प्रतिक्रिया के हिस्से के रूप में एक कुकी प्राप्त करता है और पी 3 पी का भी निरीक्षण करता है। यदि सब ठीक है तो यह कुकी को हार्ड ड्राइव पर सहेजता है और अगली बार जब आप अपनी वेबसाइट पर बैठे एक छवि का अनुरोध करते हैं (लेकिन अन्य डोमेन पेज का हिस्सा है) ब्राउज़र कुकी को साथ भेज देगा। लेकिन मुझे लगता है कि यह मदद नहीं करता है ;-)

मैंने डोमेन के पूरे प्रत्यक्ष अर्थ में कुकी मूल्य का कभी भी उपयोग नहीं किया है।

1

मुझे सुरक्षा प्रभावों के बारे में निश्चित नहीं है, लेकिन एक अपाचे सेटिंग है जो आपको कुकी के डोमेन को बदलने की अनुमति देती है।

# in httpd.conf (or equivalent) 
php_value session.cookie_domain mydomain.com 

मैंने सफलतापूर्वक इस विधि को सबडोमेन के लिए नियोजित किया है, लेकिन कभी भी विभिन्न डोमेन के लिए प्रयास नहीं किया है।

http://us.php.net/manual/en/function.session-set-cookie-params.php पर वर्णित PHP में चर दिशा निर्धारित करने का एक तरीका भी है। दस्तावेज किसी भिन्न डोमेन पर कुकीज़ सेट करने की क्षमता या अक्षमता का कोई संदर्भ नहीं देता है।

इस विषय पर एक अलग Stack Overflow thread है, लेकिन मुझे नहीं लगता कि यह हमेशा पर्याप्त उत्तर दिया गया था।

3

आप एक ही डोमेन का उपयोग कर दो साइटों है और उन दोनों के बीच कुकीज़ साझा करना चाहते हैं तो प्रत्येक डोमेन के लिए अपने settings.php फ़ाइल में कुछ इस तरह सेट करें: '।'

ini_set('session.cookie_domain', '.EXAMPLE.com'); 

सुनिश्चित करें कि आप प्रमुख शामिल हो डोमेन नाम से पहले, या यह काम नहीं करेगा।

यह उपयोगकर्ताओं को डोमेन-व्यापी कुकीज़ के लिए कॉन्फ़िगर की गई किसी भी साइट के बीच लॉगिन स्थिति बनाए रखने की अनुमति देता है।

इसका नकारात्मक साइड इफेक्ट भी हो सकता है, इसलिए ऐसा न करें जब तक आप उन साइटों के लिए शामिल सभी कुकीज़ से परिचित न हों जिन्हें आप कुकीज़ साझा करना चाहते हैं।

संबंधित मुद्दे