2011-06-14 17 views
6

में लॉगिन जानकारी संग्रहीत करना मैं लगातार लॉगिन के लिए ब्राउज़र कुकी में उपयोगकर्ता की प्रमाणीकरण जानकारी सहेजना चाहता हूं। जैसा कि वे कहते हैं, कुकी में किसी भी गुप्त जानकारी (जैसे पासवर्ड) को स्टोर करना कभी सुरक्षित नहीं है, लेकिन 'पासवर्ड याद रखें' जैसे विकल्प रखने के लिए, मुझे लगता है कि कोई अन्य विकल्प नहीं है।कुकीज़

तो, यदि कोई उपयोगकर्ता अपनी लॉगिन जानकारी याद रखना चाहता है, और यदि मैं उपयोगकर्ता नाम (ईमेल) + पासवर्ड नहीं संग्रहीत करता हूं, लेकिन कुछ अन्य अद्वितीय जानकारी, जैसे कि कुकी में हैशड डीबी आईडी। तो मुझे यह जांचना चाहिए कि कुकी मैचों में रखी गई हैड आईडी को उपयोगकर्ता के ईमेल के साथ संग्रहीत किया गया है जो कुकी में संग्रहीत है। जैसा कि मुझे लगता है कि कोई भी ब्राउज़र में संग्रहीत कुकीज़ को आसानी से देख सकता है (उदाहरण के लिए फ़ायरफ़ॉक्स, विकल्प -> कुकीज में)।

तो क्या यह कंप्यूटर के कुकी से सहेजने के लिए कमजोर होगा, फिर उस कंप्यूटर के साथ अन्य कंप्यूटर सेट कुकी पर और वह लॉग इन होगा? (जैसा कि स्क्रिप्ट संग्रहीत ईमेल की जांच करेगी और डेटाबेस के साथ आईडी धोएगी और यह मेल खाएगी)?

क्या इस दृष्टिकोण को डेटाबेस में अन्य जानकारी संग्रहीत किए बिना थोड़ा सुधार किया जा सकता है (जैसे सत्र आईडी आदि)? धन्यवाद

+1

एक दृष्टिकोण जिसे आप विचार करना चाहते हैं, वह कुकी में उपयोगकर्ता की आईडी को संग्रहीत कर रहा है, लेकिन एक निरंतर प्रमाणीकृत कुकी भी है। एक आईडी कुकी वाला उपयोगकर्ता लेकिन कोई प्रमाणीकृत कुकी आपके सिस्टम को ब्राउज़ नहीं कर सकती है लेकिन पहली बार जब वे बदलाव करने का प्रयास करते हैं तो पासवर्ड के लिए संकेत दिया जाएगा। यदि पासवर्ड सही है तो प्रमाणीकृत कुकी सेट की गई है और उपयोगकर्ता को फिर से नहीं पूछा जाएगा। चूंकि कुकी गैर-निरंतर है, प्रमाणीकरण केवल सत्र के अंत तक ही टिकेगा। – GordonM

+0

@ गॉर्डनएम, धन्यवाद, मुझे लगता है कि amazon.com का एक ही दृष्टिकोण है। मुझे यह जानने में दिलचस्पी है कि यदि आप कुकी तक पहुंचते हैं, तो ईमेल + और कुछ जानकारी धो लें, आपके ब्राउज़र में उन कुकीज़ को सेट करना आपके लिए कितना मुश्किल होगा? – Roman

+0

मैं कुकीज़ में बहुत कम भंडारण कर रहा हूं। लगातार आईडी कुकी उपयोगकर्ता के आईडी का प्रश्न पूछेगी, और गैर-निरंतर ऑथ कुकी या तो सत्य या गलत होगी। किसी कार्य को पूरा करने के लिए पूरी तरह से आवश्यक कुकी की तुलना में कुकी में अधिक संग्रहण से बचने का प्रयास करें, जैसे कि आप केवल एक आईडी भेजते हैं जो एक स्नूपिंग हैकर को आगे बढ़ना है, जबकि यदि आप अतिरिक्त जानकारी भेजते हैं जो हैकर को अधिक सुराग दे सकता है अपने सिस्टम पर हमला करने के लिए। – GordonM

उत्तर

11

एक और विकल्प है।

प्रत्येक उपयोगकर्ता के लिए, लॉग इन करने और याद रखने का अनुरोध करने पर, एक लंबी यादृच्छिक स्ट्रिंग बनाएं।

उपयोगकर्ता द्वारा दी गई कुकी में उपयोगकर्ता आईडी के साथ इस स्ट्रिंग को स्टोर करें।
अपने डीबी में स्ट्रिंग के ठीक से नमकीन हैश स्टोर करें।

यदि उपयोगकर्ता याद रखने वाली कुकी प्रस्तुत करता है, तो अपने डेटाबेस में हैश किए गए सत्यापनकर्ता के लिए यादृच्छिक स्ट्रिंग से मिलान करें (जैसे कि यह एक पासवर्ड है)।

यदि यह मेल खाता है -> उपयोगकर्ता को लॉग इन करें और उनके लिए एक नई याद रखें- कुकी बनाएं।
यदि मिलान नहीं है -> उपयोगकर्ता नाम और पासवर्ड का अनुरोध करें।

0

मैं उपयोगकर्ता नाम (इस मामले में, ईमेल) को एन्क्रिप्ट करने के लिए सर्वर पर एक अनन्य कुंजी का उपयोग करने और इसे ऑथ कुकी में संग्रहीत करने का सुझाव दूंगा। यदि कुकी छेड़छाड़ की जाती है तो यह डिक्रिप्ट होने में विफल हो जाएगी और परिणामस्वरूप लॉगिन विफलता होगी।

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

यह नेट में अधिकार का कुकीज़ के बारे में एक explaination है, लेकिन मैं अवधारणा php पर काम करता है और साथ ही लगता है: http://support.microsoft.com/kb/910443

0

आपके पास एक विकल्प के इतना जब उस पर उपयोगकर्ता की जानकारी स्टोर करने के लिए आता है की जरूरत नहीं है ग्राहक पक्ष ...

आप क्लाइंट आईपी का उपयोग कुंजी के रूप में कुछ एन्क्रिप्शन करने का प्रयास कर सकते हैं। इस तरह से कुकी को हैकर कंप्यूटर पर कॉपी किया गया है और यदि वह ध्यान नहीं देता कि आईपी एन्क्रिप्शन की कुंजी है तो आपके पास उपयोगकर्ता की जानकारी की कुछ मूल सुरक्षा होगी।

फेसबुक इस तरह से कुछ कर रहा है, सबूत हर यदि आप किसी अन्य कनेक्शन बिंदु आप उपयोगकर्ता सत्यापन प्रणाली सोचा जाना है से लॉग इन करने का प्रयास करते है ...

तो कुछ प्रतिवर्ती एन्क्रिप्शन के लिए देखने के लिए और इस करना चाहिए अपने दिन;)

+4

अस्पष्टता के माध्यम से सुरक्षा कोई सुरक्षा नहीं है। – Gumbo

+1

मुझे यह याद होगा ^^ – MaxouMask

0

कैसे बनाने के लिए "मुझे याद रखें" पर एक अच्छा लेख है और अधिक सुरक्षित कुकीज़: http://jaspan.com/improved%5Fpersistent%5Flogin%5Fcookie%5Fbest%5Fpractice

मैं विधि एक PHP पुस्तकालय में आलेख में वर्णित को लागू किया है: https://github.com/gbirke/rememberme, हो सकता है आप उपयोग कर सकते हैं कि संदर्भ के रूप में।

सत्र निर्धारण और कुकी चोरी Firesheep की उम्र में एक वास्तविक समस्या है। इसके खिलाफ एकमात्र रक्षा एसएसएल के साथ आपकी साइट को सुरक्षित कर रही है और एक्सएसएस त्रुटियों के लिए निगरानी कर रही है।

आपकी सुरक्षा में सुधार करने का एक और तरीका यह याद रखना है कि कोई उपयोगकर्ता "मुझे याद रखें" कुकी के साथ लॉग इन करता है और उसे फिर से प्रमाणित करने के लिए मजबूर करता है जब वह कुछ "खतरनाक" करता है जैसे लॉगिन क्रेडेंशियल्स को ऑर्डर या बदलना।The definitive guide to form-based website authentication

+1

दुर्भाग्य से, पहले जुड़े आलेख में प्रस्तावित सुधार कुछ भी सुधार नहीं कर रहे हैं। वे जहां प्रतिक्रिया में लिखे गए हैं: http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/ लेकिन दुख की बात है कि वे गलत हैं। – Jacco

+0

क्या आप समझा सकते हैं क्यों? – chiborg

+0

विवरण बॉक्स में विस्तार से व्याख्या करने के लिए पर्याप्त जगह नहीं है।इसके बारे में कुछ चर्चा फिशबॉइल आलेख से नीचे है, साथ ही टिप्पणियों में [वेबसाइट प्रमाणीकरण के लिए परिभाषित मार्गदर्शिका] (http://stackoverflow.com/questions/549/the-definitive-guide-to-website-authentication/ 477,579 # 477,579)। – Jacco

0

तुम भी एक टाइमस्टैम्प समय सीमा समाप्त हो के साथ एक UserID और एक SessionID के साथ कुकी स्थापित कर सकते हैं:

अधिक संसाधनों के लिए, इस प्रश्न को देखते हैं। फिर यदि आप कुकी को आईपी या होस्टनाम (या दोनों तरफ से) से बांधते हैं तो आप कुकी स्टील्स और अन्य सामान से काफी सुरक्षित हैं।

0

मुझे लगता है कि कोई किसी अन्य विकल्प

फिर से सोचो होती है।

सत्र बनाए रखने के लिए आपको पासवर्ड क्लाइंटसाइड को स्टोर करने की आवश्यकता नहीं है। 'मुझे याद रखें' ऑपरेशन वही है - एक यादृच्छिक मान का उपयोग करें जो आपके सर्वर पर रखे गए डेटा के लिए एक लुकअप कुंजी है।

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

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