2011-12-19 24 views
9

मुद्दा मैं आ रही है, जो व्याख्या करने योग्य नहीं हो सकता है, इस प्रकार है। आवेदन कोहाना v3.0 ढांचे पर एक PHP अनुप्रयोग निर्माण है। संगठन आईएसपी स्तर पर प्रॉक्सी फ़िल्टरिंग सर्वर के पीछे बैठता है। प्रत्येक स्थान में एक मुख्य सार्वजनिक आईपी पता होता है जो प्रॉक्सी के माध्यम से वेब पर फ़नल करता है। प्रत्येक उपयोगकर्ता के पास नियोक्ता द्वारा जारी मैक या विंडोज वर्कस्टेशन होता है।सुरक्षित कुकीज़ एवं सत्र

वे जो अनुभव कर रहे हैं वह कुकी टकराव प्रतीत होता है। उदाहरण: एक उपयोगकर्ता अपने वर्कस्टेशन पर लॉग इन करता है तो एक और उपयोगकर्ता उसी स्थान से, अलग-अलग वर्कस्टेशन, उसी ओएस और ब्राउज़र प्रकार के साथ लॉग इन करता है। दूसरे उपयोगकर्ता को पहले उपयोगकर्ता से मेल खाने वाली नई जेनरेट की गई कुकी (टोकन) प्राप्त करके पहले उपयोगकर्ता के सक्रिय सत्र प्राप्त होते हैं। ऐसा लगता है कि केवल 'ऑथॉटोलॉगिन' कुकी से संबंधित है (सेट करें जब मुझे याद रखें कि चेक-बॉक्स लॉगिन स्क्रीन पर लगा हुआ है), लेकिन मैं प्रॉक्सी से कैशिंग करने के लिए अपने विकल्पों को खोल रहा हूं (मैं साबित नहीं कर सकता कि प्रॉक्सी अभी तक कैशिंग है)।

नेटवर्क सेटअप की वजह से

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

क्या किसी ने कभी ऐसा कुछ अनुभव किया है? और कुकी और सत्र पीढ़ी में लेने के लिए उचित कदम क्या होंगे? डेटाबेस में कुकीज़ और सक्रिय सत्र प्रबंधित करना बेहतर होगा?

  • Kohana मॉड्यूल: Jelly-प्रमाणीकरण, जेली, और प्रमाणीकरण

  • सर्वर: अपाचे/2.2.9 (डेबियन) mod_fastcgi/2.4.6 mod_jk/1.2.26 PHP/5.2.6-1 + Suhosin-पैच mod_ssl साथ lenny8/2.2.9 OpenSSL/0.9.8g

  • ज्ञात ब्राउज़र: आईई 8 & 9, फ़ायरफ़ॉक्स (ओएस और विन), और सफारी (ओएस)

+0

+1: ध्यान से प्रश्न पूछा - अच्छा उपलब्ध विस्तार के साथ। बहुत बढ़िया। –

+0

मैं सहमत हूं, लेकिन क्या यह प्रॉक्सी के साथ कोई समस्या नहीं है जो ऑटो-लॉगिन कुकी का उपयोग करने वाली किसी भी सेवा पर लागू होगी? –

+0

@ पेक्का जो पिछले सप्ताह के लिए मेरा विचार/निराशा रहा है। फिर अपने घर के आईटी कर्मचारियों से पूछने के बाद, मैंने सीखा कि प्रॉक्सी फ़िल्टर का उद्देश्य जीमेल, फेसबुक, ट्विटर इत्यादि जैसी साइटों को अवरुद्ध करना था ... इसलिए मुझे विश्वास है कि उनके पास साइट्स के बाहर की साइटों तक पहुंच नहीं है नेटवर्क जहां वे लॉगिन करते हैं। यह एप्लिकेशन बहुत ही अच्छा हो सकता है, उन्हें नेटवर्क के बाहर एक ऑटो-लॉगिन कुकी जारी की जा सकती है। – ixasilent

उत्तर

2

यह सिर्फ एक विचार है लेकिन PHP सत्रों के साथ एक बग (आपके डेबियन और PHP संस्करण के आधार पर) होता है।मैं क्या सुझाव है कि आप की कोशिश करने के लिए:

  1. चेक this link - यह आपकी समस्या से संबंधित नहीं किया जा सकता है लेकिन यह एक डेटाबेस ड्राइवर करने की कोशिश
  2. स्विच लायक है - मैं 90% संभावना है कि यह सब कुछ
  3. ठीक कर देंगे देना चाहते हैं तो अलग डेबियन सर्वर पर
  4. टेस्ट - यह पूरा करने हालांकि
+0

मुझे नहीं लगता कि लिंक लागू है, लेकिन भविष्य के संदर्भ के लिए विधिवत नोट किया गया है। आवेदन कोहाना 3.0 डेटाबेस और जेली मॉड्यूल के माध्यम से MySQL पीडीओ का उपयोग करता है। दिमाग में कोई अन्य ड्राइवर? इस समस्या पर रिपोर्ट करने वाले अन्य क्लाइंट्स के लिए इस सर्वर पर लगभग 15 अन्य साइटें समान नहीं हैं (- डेटाबेस सामग्री), इसलिए मुझे पूरा यकीन है कि इसे नेटवर्क मेक-अप और जुर्माना की आवश्यकता है इस साइट के लिए कुकी पीढ़ी ट्यून करें। अच्छा लिंक! मैं इसे बुकमार्क कर दूंगा, क्योंकि यह एक विकी के साथ एक सत्र टाइमआउट समस्या को संबोधित कर सकता है जो एक महीने के लिए मेरे बैक बर्नर पर रहा है। – ixasilent

+0

मेरा मतलब है कि सत्र डेटाबेस ड्राइवर पर स्विच करें, पीडीओ/जेली को न छोड़ें यदि आप यही सोचते हैं;) – matino

+0

आप डेटाबेस में सत्र को सही तरीके से संग्रहीत कर रहे हैं। ईमानदार होने के लिए मैं इस समाधान से खुश नहीं हूं, लेकिन अब इसे एक हैक के रूप में आनंदित करूंगा। बेशक जब हजारों उपयोगकर्ता फिर से एप्लिकेशन का उपयोग शुरू करते हैं और मैं मूर्ख की तरह दिखता हूं ... मैं वापस आऊंगा! बस सुरक्षित होने के लिए मैं kohana_cookie वर्ग 'सेट विधि को आरएफसी 210 9 संगत होने के लिए फिर से लिखूंगा। यह कम से कम जिम्मेदार काम करने के लिए है। धन्यवाद! – ixasilent

2

वाह thats एक बुरा भेद्यता, अच्छी पकड़!

PHP के तहत कुकीज़ जेनरेट करने का सबसे अच्छा तरीका PHP को ऐसा करने देना है: session_start()। और बस यही! यदि आप अपनी कुकी बना रहे हैं, तो आप वास्तव में कहीं गड़बड़ कर रहे हैं। अब आप $_SESSION[] सुपर ग्लोबल का उपयोग कर सकते हैं। सबसे अच्छा अभ्यास session_start() को आपके एप्लिकेशन में $ _SESSION तक पहुंचने से पहले एक सामान्य शीर्षलेख फ़ाइल में कॉल करना है। HTTP_Only, और "सुरक्षित" ध्वज (https से अधिक कुकी के लिए मजबूर कर):

शायद अन्य समस्याओं को आप विचार जैसे owasp a9, CSRF में रखना चाहिए, और कुकी झंडे हैं।

+0

@ रॉक धन्यवाद! मैं कोड के माध्यम से एक दो बार खोदा गया है और सत्र का प्रबंधन करने के लिए कि हाँ मैं का उपयोग कर रहा हूँ पीएचपी सत्यापित कर सकते हैं (session_start(), session_name(), session_set_cookie_params(), session_destroy(), आदि ...)। लेकिन सिर्फ इसलिए कि आपने इसका उल्लेख किया है, मैं फिर से खुदाई करूंगा, दोबारा जांच करूँगा, और क्रेडिट दे सकता हूं जहां मैं हवा के लिए आती हूं। यह एक एसएसएल साइट है और सुरक्षित और HTTP_ONLY झंडे सेट हैं। – ixasilent

+0

क्षमा करें @Rook का मतलब आपके नाम को एफ-अप करने का नहीं था। – ixasilent

+0

@ixasilent आपको कुकी मूल्य सेट करने की आवश्यकता नहीं होनी चाहिए। मुझे लगता है कि आप उपयोगकर्ता को पहचानने के लिए कोहानाकुकी कक्षा पर भरोसा कर रहे हैं। यह setcookie() का उपयोग कर रहा है, जो बुरा है। – rook

0

मैं सुनिश्चित नहीं हूं आसान अगर मैं आप सही तरीके से समझा नहीं जा सका, लेकिन हो सकता है ... मैं उस अनुरोध को समझा इस प्रकार है:

उपयोगकर्ता (वर्कस्टेशन) ==> प्रॉक्सी() ==> इंटरनेट ==> कंपनी वेबसाइट (और विपरीत दिशा में प्रतिक्रिया)।

जांचें कि प्रॉक्सी "HTTP_X_FORWARDED_FOR" ($ _SERVER superglobal चर में) सेट करता है या नहीं। यह उपयोगकर्ता के वर्कस्टेशन आईपी पते को निर्धारित करने का एकमात्र तरीका हो सकता है। यदि हां, तो आप कर चुके हैं।

+0

बंद करें, लेकिन क्योंकि प्रॉक्सी आईएसपी के रूप में भी कार्य करता है, वहां HTTP_X_FORWARDED_FOR नहीं है। – ixasilent

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