2013-09-22 6 views
5

मैं प्रणाली यहां रेखांकित का उपयोग कर एक "मुझे याद रखें" उपयोगिता को लागू करने का प्रयास कर रहा हूँ: Improved persistent login cookieकार्यान्वयन मुझे टोकन और अधिक डिवाइस में श्रृंखला के साथ याद

लेकिन वहाँ तर्क यहाँ मेरे लिए के साथ एक समस्या है और अगर सोच रहा था कोई भी मेरे लिए इसे साफ़ कर सकता है।

  • उपयोगकर्ता को सत्र आईडी दी जाती है। यह एक यादृच्छिक रूप से जेनरेट की गई स्ट्रिंग है और उपयोगकर्ता के खाते के जीवनकाल में लगातार है।

  • एक उपयोगकर्ता को टोकन आईडी दिया जाता है। यह एक यादृच्छिक रूप से जनरेट स्ट्रिंग है और हर बार उपयोगकर्ता को सफलतापूर्वक में लॉग निर्मित किया गया है।

इन मूल्यों के दोनों उपयोगकर्ता की मशीन पर और डेटाबेस में हस्ताक्षर किए कुकीज़ के रूप में जमा हो जाती है।

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

यह बहुत अच्छा है। हालांकि क्या होता है जब कोई उपयोगकर्ता एकाधिक एप्लिकेशन या ब्राउज़र से मेरे एप्लिकेशन का उपयोग करने का प्रयास करता है? मान लें कि उपयोगकर्ता क्रोम के साथ मेरी सेवा में लॉग इन करता है और चेक मुझे याद करता है। अगली बार जब वे फ़ायरफ़ॉक्स के माध्यम से लॉग-इन करते हैं और मुझे याद भी करते हैं। एक नया टोकन जेनरेट किया जाएगा ताकि अगली बार जब उपयोगकर्ता क्रोम के साथ लॉगिन करने का प्रयास करता है तो झूठी चोरी ट्रिगर की जाएगी - नहीं?

यदि ऐसा है तो मैं इस समाधान को और अधिक विश्वसनीय तरीके से कैसे कार्यान्वित कर सकता हूं? मुझे अच्छी तरह पता है कि कुकी आधारित प्रमाणीकरण इसकी प्रकृति कम सुरक्षित है और कुकी अधिकृत उपयोगकर्ता को खरीद जैसी किसी भी हानिकारक कार्रवाई करने की अनुमति नहीं देगा।

उत्तर

4

मूल पोस्ट है कि "बेहतर लगातार लॉगिन कुकी" संदर्भित करता है, (यहां मिली: http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/) में कहा गया:

कुकी उपयोगकर्ता के उपयोगकर्ता नाम, एक विभाजक वर्ण के बाद, कुछ के बाद से मिलकर चाहिए बड़ी यादृच्छिक संख्या (128 बिट्स दिमाग-दमकल रूप से स्वीकार्य होने के लिए पर्याप्त लगता है)। सर्वर संख्या-> उपयोगकर्ता नाम संघों की एक तालिका रखता है, जिसे कुकी की वैधता सत्यापित करने के लिए देखा जाता है। यदि कुकी एक यादृच्छिक संख्या और उपयोगकर्ता नाम जो तालिका में एक दूसरे के लिए मैप किए जाते हैं, तो लॉगिन स्वीकार किया जाता है।

किसी भी समय, एक उपयोगकर्ता नाम कई इस तरह की संख्या

तो, उपयोगकर्ता एक ही समय में कई लगातार टोकन हो सकता है करने के लिए मैप किया जा सकता है।

+1

धन्यवाद यह अब समझ में आता है। मेरे पास टोकन का एक समूह होगा और उन्हें गैर-उपयोग पर 30 दिन की समाप्ति देगी, इसलिए मैं डेटाबेस को अनावश्यक डेटा के साथ भर नहीं पाता हूं। –

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