2009-01-24 26 views
5
में प्रमाणीकरण के लिए सबसे अच्छा तरीका है

जब एक मॉडल-दृश्य-नियंत्रक रास्ते में एक प्रमाणीकरण पुस्तकालय लिख जाने के लिए सबसे अच्छा और सबसे सुरक्षित तरीका क्या है?पीएचपी

चीजें हैं जो मुझे एक कठिन समय देना एक कुकी के माध्यम से उन गतिविधि पर नज़र और याद उपयोगकर्ताओं रखने या डेटाबेस में सत्र भंडारण कर रहे हैं?

अग्रिम धन्यवाद :)।

+0

जब भी संभव हो, आपको मौजूदा प्रमाणीकरण ढांचे का फिर से उपयोग करना चाहिए, क्योंकि, वास्तव में, यह जटिल है। उदाहरण के लिए, https://github.com/delight-im/PHP-Auth पर एक नज़र डालें जो ढांचा-अज्ञेयवादी और डेटाबेस-अज्ञेयवादी दोनों है। – caw

उत्तर

3

इसे लागू करने का सबसे आसान तरीका PHP सत्रों के साथ है।

बस session_start(); अपनी स्क्रिप्ट की शुरुआत के पास और आपके पास प्रमाणीकरण डेटा रखने के लिए $ _SESSION वैश्विक सरणी तक पहुंच है।

अपने सर्वर के विन्यास पर निर्भर करता है सभी डेटा $ _SESSION में संग्रहीत केवल सर्वर जिसमें से यह (कुछ अपवादों को छोड़कर) की मेजबानी की है पर उपलब्ध हो जाएगा। आप इसे अस्थायी निर्देशिका में, memcached, या यहां तक ​​कि डेटाबेस में सहेजने के लिए कॉन्फ़िगर कर सकते हैं।

केवल बात यह है कि ग्राहक के बीच प्रसारित किया जाता है और अपने सर्वर एक "सत्र कुंजी है।" कुंजी कुकी या यूआरएल-रीराइट्स द्वारा पारित की जा सकती है (जिसे पारदर्शी रूप से start_session आउटपुट बफर द्वारा नियंत्रित किया जाता है)।

+1

इस के साथ गलत जाना चाहते हैं। – UnkwnTech

+0

धन्यवाद। लेकिन मैं उपयोगकर्ताओं की गतिविधि का ट्रैक कैसे रख सकता हूं और मैं उपयोगकर्ताओं को 1 महीने के लिए लॉग इन रहने का विकल्प कैसे दे सकता हूं? डेटाबेस, सत्र या कुकी में मुझे कौन सी चीज़ों को स्टोर करना चाहिए? और यह जांचने का सबसे अच्छा तरीका क्या है कि सब ठीक है या नहीं? –

+0

यह एक अतिरिक्त हैश के साथ कुकी में स्पष्ट रूप से सेट करने के लिए कुछ होगा, फिर डीबी स्टोर आईपी में, यदि उपयोगकर्ता किसी भिन्न आईपी से लॉग इन करता है या कुकी में हैश डीबी में से मेल नहीं खाता है तो उपयोगकर्ता की आवश्यकता होती है फिर से लॉगिन करने के लिए। – UnkwnTech

4

आप सत्र का उपयोग करना चाहते हैं, तो आप की तरह session fixation और session hijacking हमलों के खिलाफ उन्हें सुरक्षित है।

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

एक और अच्छा संरक्षण उपाय समय-समय पर सत्र आईडी स्वैप करने के लिए है। इस प्रकार वैध सत्र आईडी पर हमले की अवधि छोटी है।