मैं एक नई PHP साइट के लिए लॉगिन और प्रमाणीकरण प्रणाली विकसित कर रहा हूं और विभिन्न हमलों और भेद्यताओं पर पढ़ रहा हूं। हालांकि, यह थोड़ा उलझन में है, इसलिए मैं यह देखना चाहता हूं कि मेरा दृष्टिकोण समझ में आता है।एक सुरक्षित PHP लॉगिन और प्रमाणीकरण रणनीति विकसित करना
सत्र में:
मैं निम्नलिखित डेटा भंडारण पर योजना उपयोगकर्ता के आईडी, टुकड़ों में बांटा + नमकीन
HTTP_USER_AGENT
कुकी में और डेटाबेस में: यादृच्छिक टोकन , धोया + नमकीन पहचानकर्ता
प्रत्येक पृष्ठ पर, मैं निम्न कार्य पर योजना: एक सत्र मौजूद है
, तो उस का उपयोग करके प्रमाणित। जांचें कि
HTTP_USER_AGENT
संग्रहित सत्र में से किसी एक से मेल खाता है।यदि कोई सत्र मौजूद नहीं है, तो कुकी को प्रमाणित करने के लिए उपयोग करें। जांचें कि कुकी में टोकन और पहचानकर्ता डेटाबेस में उनसे मेल खाता है।
यदि कुकी अमान्य है या मौजूद नहीं है, तो उपयोगकर्ता से लॉगिन करने के लिए कहें।
क्या इसमें कोई स्पष्ट त्रुटियां हैं? जब तक मैं कुकी में टाइमआउट सेट करता हूं, मुझे काफी सुरक्षित होना चाहिए, है ना? क्या मुझे कुछ याद आ रही है?
अग्रिम में बहुत धन्यवाद।
महत्वपूर्ण कार्यों के लिए एक बार टोकन सिस्टम के कुछ उपयोग का उपयोग करने पर भी विचार करता है ... – TheHippo
बिल्कुल, डेटाबेस में सत्र आईडी संग्रहीत करना बड़ी गलती है। डेटाबेस में सत्र आईडी संग्रहीत करके आप अपने सिस्टम के खिलाफ एसक्यूएल इंजेक्शन अधिक मूल्यवान बनाते हैं। आपको यह मानना चाहिए कि आपका सिस्टम टूट जाएगा, और आपके पास उल्लंघन की सौदा करने के लिए कार्रवाई की योजना होनी चाहिए। यही कारण है कि पासवर्ड हैंश के रूप में संग्रहीत हैं। एक और अधिक php एक सत्र हैंडलर के साथ आता है, यदि आप पहिया का पुन: आविष्कार करते हैं तो मैं आपको आश्वस्त करता हूं कि यह कम सुरक्षित होगा। – rook
यहां बहुत अच्छी पढ़ाई भी है: http://stackoverflow.com/questions/549/the-definitive-guide-to-website-authentication-beta#477579 –