2010-04-28 8 views
9

क्या यह सब कुछ के लिए एक ही टेबल का उपयोग करने से अपने पासवर्ड के लिए उपयोगकर्ता जानकारी रखने के लिए कोई और सुरक्षित है?क्या आप उपयोगकर्ता नाम और पासवर्ड के लिए एक या दो टेबल का उपयोग करेंगे?

उत्तर

7

नहीं, मैं बस यह करूँगा:

आईडी, उपयोगकर्ता नाम, पासवर्ड।

जहां आईडी सिर्फ ऑटोइनक्रिकमेंट है, उपयोगकर्ता नाम 20 का एक वर्चर है (या तो, आपकी ज़रूरतों के आधार पर) और पासवर्ड नमक के साथ एमडी 5 या SHA1 हैश पासवर्ड है।

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

+3

भी मेज पर नमक जोड़ने के लिए मत भूलना। –

+2

आपको ऐसा करने की ज़रूरत नहीं है। आप प्रत्येक पासवर्ड के लिए एक नमक का उपयोग कर सकते हैं। यदि डेटाबेस हैक किया गया है तो उनके पास नमक नहीं है। यदि आप इसे डेटाबेस में जोड़ते हैं तो वे करते हैं। नमक का विचार यह है कि अंतिम उपयोगकर्ता के परिणामस्वरूप हैश पर अंतिम नियंत्रण नहीं होता है। – Snake

+0

सभी के लिए धन्यवाद! मुझे नमकीन हैश के बारे में पता है। मैं बस सोच रहा था कि दो टेबल होने से कोई मूल्यवान सुरक्षा सुविधा मिलती है। चीयर्स! – expora

0

नहीं, यह सुरक्षित नहीं है। बस सुनिश्चित करें कि आपके पासवर्ड को डीबी में संग्रहीत करने से पहले नमकीन + हैश किया गया है।

6

नहीं, मैं नहीं देख सकता कि यह कैसे सुरक्षित हो सकता है।

आपको वास्तव में पासवर्ड संग्रहीत करने से बचना चाहिए। बस अपने नमकीन हैश स्टोर करें।

अतिरिक्त पठन:

+0

लिंक के लिए धन्यवाद! – expora

+2

+1 बिल्कुल - आपको केवल हैश की तुलना करने की आवश्यकता है बराबर है। –

0

नहीं। जब तक नहीं हर तालिका इसे उपयोग करने के लिए एक अलग उपयोगकर्ता खाते की आवश्यकता - जो इसे एक पूरा दर्द से क्वेरी बनाना होगा - और फिर भी, हैकर एक लॉगिन किया है, तो संभावना है कि वे दूसरे को प्राप्त कर सकते हैं।

बस यह सुनिश्चित करें कि आप एक हैश फॉर्म में पासवर्ड संग्रहीत कर रहे हैं, SHA-2 और नमक जैसे सुरक्षित हैश का उपयोग कर। उन्हें सादा पाठ में संग्रहित न करें और (आईएमएचओ) उन्हें एन्क्रिप्टेड स्टोर न करें।

+0

धन्यवाद एडम। मैं उस तरंगदैर्ध्य में था जब इस बारे में सोच रहा था: हैकर को सबकुछ तक पहुंच मिलेगी? मुझे लगता है कि यूनिक्स और फ़ाइलों जैसे/etc/passwd और/etc/छाया के बारे में कुछ सीखते समय यह मेरे लिए हुआ। मेरे प्रश्न के उत्तर पढ़ने के बाद यह स्पष्ट हो गया कि यह विचार वेब अनुप्रयोग में मदद नहीं करता है (यूनिक्स केस का इतिहास नहीं है)। – expora

1

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

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

स्पष्ट रूप से आपके एप्लिकेशन को उपयोगकर्ता के प्राधिकरणों के बारे में जानकारी प्रबंधित करने की आवश्यकता होगी, जो आमतौर पर 'भूमिका' तालिका में संभाला जाता है। लेकिन यह जानने की कोई आवश्यकता नहीं है कि उपयोगकर्ता को प्रमाणीकृत कैसे किया गया था।

+0

अलग-अलग तालिका में उपयोगकर्ता नाम और पासवर्ड संग्रहीत करने से कोई प्रभाव पड़ता है कि एप्लिकेशन प्रमाणीकरण को संभालता है या नहीं? – Matthew

0

बीटीडब्ल्यू, पहले से ही एक बहुत ही सरल (और शक्तिशाली) सी # नमकीन हैश कक्षा पुस्तकालय (उन्होंने पुस्तकालय का उपयोग करने का एक छोटा सा प्रदर्शन भी शामिल किया है) - Link

यह भी (ताकि आप एक वैध पासवर्ड के रूप में उपयोगकर्ता के इनपुट सत्यापित कर सकते हैं) और आप हैश एल्गोरिदम अपने आप को (SHA1/MD5/आदि।)

0

कोई सुरक्षा लाभ नहीं है चुन सकते हैं, तो सत्यापन तंत्र प्रदान करता है, लेकिन एकाधिक तालिकाओं का उपयोग करके एकल लॉगिन से जुड़े कई सिस्टमों को प्रमाण-पत्र संग्रहीत करने के लिए उपयोगी हो सकता है।

जैसा ऊपर बताया गया है, सुरक्षा के लिए नमकीन हैश द्वारा सुरक्षा प्रदान की जानी चाहिए।

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

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