2011-11-25 16 views
10

यह की बात आती है मुझे याद कुकीज़, वहाँ 2 अलग दृष्टिकोण हैं:"मुझे याद रखें" कुकीज़ के लिए हैश या टोकन?

Hashes
मुझे याद कुकी भंडार एक स्ट्रिंग है कि उपयोगकर्ता की पहचान कर सकते हैं (यानी यूजर आईडी) और एक स्ट्रिंग है यह साबित कर सकता है कि पहचाना गया उपयोगकर्ता वह होने का नाटक करता है - आमतौर पर उपयोगकर्ता पासवर्ड के आधार पर हैश।

टोकन
मुझे याद कुकी भंडार एक यादृच्छिक (व्यर्थ), अभी तक विशिष्ट स्ट्रिंग होता है एक टोकन में एक रिकॉर्ड मेज, कि एक यूजर आईडी संग्रहीत करता है के समान हैं।

कौन सा दृष्टिकोण अधिक सुरक्षित है और इसके नुकसान क्या हैं?

+6

अंतर्ज्ञान से पता चलता है कि डिस्पोजेबल यादृच्छिक तार एक एल्गोरिदम द्वारा उत्पादित निर्धारक तारों से सुरक्षित होना चाहिए लेकिन मुझे लगता है कि आप कुछ संदर्भ चाहते हैं। और अंतर्ज्ञान हमेशा वैसे भी सही नहीं है। –

+0

यह रूबी क्यों टैग किया गया है? –

+1

इसे ढूंढने वाले किसी के लिए, पढ़ें: [पर्सिस्टेंट लॉगिन कुकी बेस्ट प्रैक्टिस] (http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/)।असल में, आपको टोकन को उसी तरह से रखना होगा जिस तरह से आपके पास पासवर्ड है। –

उत्तर

9

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

  1. एक हमलावर उपयोगकर्ता आईडी से टोकन उत्पन्न नहीं कर सकते, लेकिन वह निश्चित रूप से हैश उत्पन्न कर सकते हैं। यह एक बड़ी समस्या है, भले ही आप हैश उत्पन्न करते समय नमक का उपयोग करें (और आपको चाहिए), यदि नमक कभी भी गलत हाथों में आते हैं तो आपके उपयोगकर्ता खराब हो जाते हैं।

  2. इन टोकन को देने से आपके उपयोगकर्ताओं (या यदि आपका व्यवस्थापक हो तो) कुछ सत्रों को "लॉग आउट" करने में सक्षम बनाता है, जिन्हें वे छुटकारा पाने के लिए चाहते हैं। यह वास्तव में एक अच्छी सुविधा है, उदाहरण के लिए Google और फेसबुक इसका उपयोग करते हैं।

तो, यदि आपके पास समय और बजट है: टोकन, बिल्कुल।

1

यदि वे हर बार एक यादृच्छिक स्ट्रिंग उत्पन्न करते हैं तो हाँ टोकन अधिक सुरक्षित होंगे।

दूसरी तरफ, मुझे याद रखने का पूरा बिंदु यह है कि उपयोगकर्ता को फिर से लॉग इन करने की ज़रूरत नहीं है, इसलिए जब तक कि वे लॉग इन पर क्लिक न करें, जब तक कि यह समाप्त नहीं हो जाता तब तक एक नया टोकन फिर से उत्पन्न करने की आवश्यकता नहीं होती है।

मुझे लगता है कि आप टोकन के साथ चिपके रहते हैं चाहिए और :-P

4

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

Security of token based authentication

आशा इस मदद करता है।

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