2009-12-07 22 views
12

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

+0

की तरह आप पहले से ही जवाब दे दिया है लगता है खुद सवाल, उपयोगकर्ता आईडी स्टोर करें। – TechTravelThink

+1

यह सुरक्षित नहीं है - नीचे दिए गए उत्तरों देखें। – Jon

उत्तर

12

यदि आप किसी गुप्त कुंजी के साथ साइन इन करते हैं तो केवल यूजरिड को कुकी में ही स्टोर कर सकते हैं, केवल आपके एप्लिकेशन ही जानते हैं। अन्यथा उपयोगकर्ता के लिए कुकी को कुछ भी बदलने और किसी और के रूप में लॉगिन करना संभव है। इसलिए, यदि आप उपयोगकर्ता आईडी को स्टोर करना चाहते हैं, तो गुप्त आईडी के साथ उपयोगकर्ता आईडी का हैश (आदर्श रूप से HMAC का उपयोग करके) और जब आप उन्हें लॉग इन करना चाहते हैं, तो उसी हैश की गणना करें और कुकी से हैश से इसकी तुलना करें। एक और समाधान एक यादृच्छिक टोकन उत्पन्न करना है, इसे डेटाबेस में संग्रहीत करना और कुकी में इसका उपयोग करना है। यदि यह लंबा और यादृच्छिक है, तो बहुत कम मौका है कि कोई अन्य व्यक्ति के टोकन का अनुमान लगाएगा।

+0

धन्यवाद बहुत आदमी – halocursed

+0

धन्यवाद! लेकिन आपका क्या मतलब है "गुप्त कुंजी के साथ उपयोगकर्ता आईडी"। अगर मैं एक बुरे आदमी हूं और मैं पूरी कुकी को स्टील करता हूं, और इस हैश स्ट्रिंग को नाटक करने के लिए मिलता हूं तो मैं लॉग इन करता हूं, क्या सर्वर जानता है कि मैं गलत व्यक्ति हूं? – Jaskey

+0

गुप्त कुंजी का बिंदु यह सुनिश्चित करना है कि आप कुकी को सेट करके बस किसी भी उपयोगकर्ता के रूप में "लॉगिन" नहीं कर सकते। गुप्त कुंजी को जानने के बिना, आपके पास कुकी बनाने का कोई तरीका नहीं है। यदि आप किसी मौजूदा उपयोगकर्ता के लिए पूरी कुकी को स्टील करते हैं, तो आप निश्चित रूप से उस उपयोगकर्ता के रूप में लॉगिन कर सकते हैं। इसे रोकने के लिए आप कुछ तरीके कर सकते हैं: 1) कुकी को कुछ समय के बाद समाप्त कर दें (कुकी में टाइमस्टैम्प एन्कोड करें), 2) कुकी को एक निश्चित आईपी पते पर विशिष्ट बनाएं (फिर से, कुकी में आईपी एड्रेस को एन्कोड करें), 3) इसे एक निश्चित उपयोगकर्ता-एजेंट स्ट्रिंग के लिए विशिष्ट बनाएं (हालांकि इसे आसानी से फिक किया जा सकता है) –

1

पीएचपी अंतर्निहित सत्र प्रबंधन करता है कि आप के लिए क्या चाहिए, तो:

http://us.php.net/manual/en/book.session.php

मैं कुकी में user_id स्टोर करने की अनुशंसा नहीं होता। इसके बजाए, आप एक अद्वितीय टोकन उत्पन्न कर सकते हैं और अपने डेटाबेस में उपयोगकर्ताओं के साथ टोकन को जोड़ सकते हैं, और & प्रत्येक अनुरोध पर टोकन को पुन: उत्पन्न कर सकते हैं। दोबारा, यह थोड़ा अनावश्यक है, क्योंकि सत्र प्रबंधन पहले से ही PHP में बनाया गया है।

+0

क्या आप उस पर थोड़ा सा स्पष्टीकरण दे सकते हैं। – halocursed

-2

बस कुकी को 2 दिनों तक समाप्त करें या उस दिन की संख्या जिसे आप उपयोगकर्ता को याद रखना चाहते हैं और कुकी को सहेजना चाहते हैं।

0

PHP '$ _SESSION यह आपके लिए करता है। यदि आप पूर्ण नियंत्रण पसंद करते हैं तो आप अपनी खुद की सत्र कक्षा भी लिख सकते हैं।

एक छोटा सा ट्यूटोरियल यहाँ पाया जाता है: http://www.tizag.com/phpT/phpsessions.php

यहाँ php डिफ़ॉल्ट के बजाय दुकान सत्र के लिए mysql उपयोग करने के लिए एक छोटा सा उदाहरण है (/ tmp में फाइल): http://www.hawkee.com/snippet/2018/

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