2009-10-27 19 views
6

मैं कुकीज का उपयोग करके PHP के साथ प्रमाणीकरण को सर्वोत्तम तरीके से कैसे शामिल करना है, इस बारे में युक्तियों और विचारों की तलाश में हूं।PHP के साथ प्रमाणीकरण के लिए कुकीज़ का उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है?

क्या प्रत्येक php स्क्रिप्ट कुकी मान के लिए जांच करनी चाहिए कि यह निर्धारित करने के लिए कि उपयोगकर्ता अभी भी लॉग इन है या नहीं? क्या एक ऐसी स्क्रिप्ट होनी चाहिए जो यह जांच करे और उस स्क्रिप्ट को प्रत्येक अन्य स्क्रिप्ट से शामिल करें? फाइल सिस्टम की विभिन्न गहराई से PHP मूल्य को कुकी मूल्य से देखा जा सकता है?

तरह: blahblahblah.com/ और blahblahblah.com/login/

वे दोनों कुकी पढ़ सकते हैं?

एक पोस्ट पर बहुत सारे प्रश्न हैं, लेकिन धन्यवाद!

+0

सुरक्षा एक ऐसा क्षेत्र है जहां आपको पूछना है, आप इसे स्वयं बनाने के लिए पर्याप्त अनुभव नहीं कर रहे हैं। आप अनिवार्य रूप से किसी प्रकार की भेद्यता पैदा करेंगे, और बाद में इसके लिए भुगतान समाप्त कर देंगे। वहाँ सभ्य लेख पुस्तकालय हैं, जो उन लोगों द्वारा लिखे गए हैं जिनके पास सुरक्षा मुद्दों की गहरी समझ है। एक उठाओ और इसका इस्तेमाल करें। –

+0

यदि यह एक महत्वपूर्ण अनुप्रयोग नहीं है, तो यह स्क्रैच से प्रमाणीकरण बनाने के लिए बहुत ही निर्देशक हो सकता है। - हालांकि, वहां बहुत अच्छे ढांचे हैं (ज़ेंड फ्रेमवर्क, सिम्फनी, केकेपीएचपी) यदि आप पहिया को फिर से नहीं लेते हैं और अपने आप सब कुछ करते हैं तो आपको बेहतर परिणाम मिलेंगे। –

+0

आपके उत्तरों के लिए सभी को धन्यवाद। बहुत उपयोगी। मैं फॉर्म इनपुट मान रखने के लिए PHP सत्रों का उपयोग कर रहा हूं और सत्र को नष्ट करने वाली 'स्टार्ट ओवर' स्क्रिप्ट है। यही कारण है कि मैं php के सत्र के बजाय प्रमाणीकरण के लिए कुकीज़ का उपयोग करना चाहता था। लेकिन इस धागे के जवाबों के आधार पर मुझे सर्वर की तरफ प्रमाणीकरण रखना होगा। और PHP ढांचे संदर्भों के लिए धन्यवाद। मैंने कुछ उपयोग किया है लेकिन सिम्फनी या केकेपीएचपी नहीं। उन्हें बाहर करने के लिए जा रहे हैं। –

उत्तर

3

ग्राहक पक्ष पर कुछ भी सुरक्षित नहीं है।

आप किसी भी ब्राउज़र पर आसानी से कुकीज़ पर लॉगिन ध्वज बदलते हैं। इस प्रकार PHP की $ _SESSION

पर लॉगिन-संबंधित डेटा सहेजने की अधिक अनुशंसा की जाती है यदि आप सत्र का विस्तार करना चाहते हैं, तो बस session_set_cookie_params() देखें।

डिफ़ॉल्ट रूप से, उसी डोमेन का उपयोग वर्तमान डोमेन और उस डोमेन के सभी पथों के लिए किया जाएगा। इस प्रकार यह blahblahblah.com/ और blahblahblah.com/login/

दोनों उपयोगकर्ता लॉग इन करते समय, सत्र में पासवर्ड का उपयोगकर्ता नाम और हैश सहेजने के लिए पठनीय है।

प्रत्येक स्क्रिप्ट की शुरुआत में, डेटाबेस में उपयोगकर्ता के साथ सत्र का उपयोगकर्ता नाम और पासवर्ड सत्यापित करें। यदि सही है, तो सर्वर-साइड पर इंगित करने के लिए एक ध्वज सेट करें (उदा। $ UserLoggedIn = true) जिसमें उपयोगकर्ता लॉग इन है। अन्यथा झूठी।

0

यह एक अच्छा विचार है कि एक स्क्रिप्ट सत्र/लॉगिन जांच करे और इसे सुरक्षित पृष्ठों में शामिल करें। गहराई के लिए, आप परिभाषित कर सकते हैं कि setcookie() में यदि निर्देशिका पैरामीटर "/" पर सेट है तो यह सब कुछ सुलभ हो जाएगा।

आम तौर पर कुकीज़ के बजाय सत्रों का उपयोग करना एक अच्छा विचार है, क्योंकि यह अधिक सुरक्षित है, लेकिन आप कुकी में एन्क्रिप्टेड डेटा के आधार पर अपना स्वयं का सत्र सिस्टम बनाने का निर्णय ले सकते हैं और यह भी काम कर सकता है, लेकिन फिर से सत्र, जो स्टोर सर्वर पक्ष पर डेटा की सिफारिश की जाती है।

0

कुकी प्रति डोमेन है, इसलिए कोई फर्क नहीं पड़ता कि आप अपनी निर्देशिका संरचना में कितने गहरे हैं, कुकी ठीक से पढ़ी जाएगी (जब तक आपका डोमेन वही रहता है - एनबी इसका अर्थ है कि www.example.com और उदाहरण। कॉम अलग कुकीज़ हो सकता है)।

मैं एक प्रमाणीकरण जांच करने का सुझाव देता हूं जो कुकी में सत्र आईडी की तुलना करता है जैसे उपयोगकर्ता में लॉग इन डेटाबेस तालिका सूची और उनके सत्र आईडी - यह चेक अपनी विधि/फ़ाइल शामिल हो सकती है जिसमें शामिल है() प्रत्येक पृष्ठ पर डी। इस तरह चेक प्रत्येक पेज लोड पर किया जाएगा। एनबी यह मूल है और यहां अधिक सुरक्षित तरीके हैं - जिनमें से कुछ का उल्लेख अन्य टिप्पणियों में किया गया है।

Mauris said के रूप में, क्लाइंट पक्ष पर कुछ भी सुरक्षित नहीं है - एक "log_in" मान को स्टोर करने के लिए कुकी का उपयोग न करें जिसे आप सच/गलत के लिए जांचते हैं!

2

कुछ विचार, कोई विशेष क्रम में:

  • बाहर विभिन्न परतों अलग: स्थायी भंडारण प्रमाणीकरण बनाम।
  • PHP सत्र काफी मजबूत हैं और लगातार भंडारण को बनाए रखने के लिए अनुशंसित तरीका हैं।
  • आपके पास वैध सत्र हो सकता है, लेकिन वैध लॉगिन नहीं है।
  • एकाधिक कुकीज़ से बचें। एक काफ़ी हैं। PHP सत्र एक कुकी के साथ काम करते हैं।
  • आप कुकीज पर उप-डोमेन और पथ सेट कर सकते हैं, लेकिन वास्तव में बहुत कम बिंदु है जब तक आप बहुत कुछ सेट नहीं करते हैं, जिसे अनुशंसित नहीं किया जाता है (ऊपर देखें)।
  • इसके बजाय सत्र में कुकी में जो कुछ भी आप चाहते हैं उसे रखें।
  • आपके पास कुछ सामान्य कोड होना चाहिए जो आपके सभी पृष्ठों में शामिल हैं। यही वह जगह है जहां आप अपना सत्र शुरू करते हैं। तब सबकुछ बस काम करेगा। यह भी सत्यापित कर सकता है कि लॉगिन मान्य है।
  • एक ऐसा स्थान है जो लॉगिन प्रमाणीकरण और उसके साथ जुड़ी सब कुछ करता है।
  • लॉगआउट स्क्रीन को न भूलें!
संबंधित मुद्दे

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