2011-09-30 11 views
6

मुझे सत्र में उपयोगकर्ता की आईडी कैसे होस्ट करनी चाहिए? बस आईडी डालने के लिए? मेरा मतलब है (उदाहरण के लिए):सत्र इंजेक्शन?

$_SESSION['id'] = 1; 

उपयोगकर्ता द्वारा स्वयं को (कुकी के रूप में ..) में बदलने का कोई तरीका नहीं है? क्योंकि यदि ऐसा है, तो वह किसी भी आईडी में बदल सकता है।

इसके बारे में एक और सवाल - मैं कैसे जांच सकता हूं कि उपयोगकर्ता लॉग इन है (सत्रों के साथ)?

$_SESSION['is_logged_in'] = true; 

फिर, उपयोगकर्ता सिर्फ एक सत्र जिसका नाम उनके नाम 'is_logged_in' है नहीं बना सकते और उसके मूल्य सच है: मैं एक सत्र बनाया? या बस सर्वर के सर्वर के मूल्य के बारे में एक नियंत्रण है?

+4

देखें: [PHP सत्र निर्धारण/अपहरण] (http://stackoverflow.com/questions/5081025/php-session-fixation-hijacking#5081453) –

+1

जिस तरह से इसे काम करना है, वह है कि सत्र नियंत्रित और बनाया जाता है केवल सर्वर तो नहीं, उपयोगकर्ता * एक सत्र बनाने में सक्षम नहीं होना चाहिए जिसका नाम 'is_logged_in' है * और यह आपके द्वारा वर्णित तरीके से सत्र को प्रभावित करता है, जब तक कि आपकी सत्र पद्धति गंभीर रूप से त्रुटिपूर्ण न हो। –

+1

'$ _SESSION' में मान विशेष रूप से सर्वरसाइड संग्रहीत किए जाते हैं। उपयोगकर्ता को केवल एक PHPSESSID कुकी प्राप्त होती है जिसमें उनकी सत्र आईडी होती है। PHP स्टोर स्टोर में डेटा देखने के लिए इसका उपयोग करता है। –

उत्तर

12

PHP में सभी सत्र चर सर्वर सर्वर को संग्रहीत किया जाता है। क्लाइंट एक कुकी संग्रहीत करता है जो संदर्भ देता है कि कौन से सत्र का उपयोग किया जाना चाहिए, और फिर सर्वर सत्र के मानों को देखता है। अपने सत्र में उपयोगकर्ता आईडी के साथ is_logged_in स्टोर करना सुरक्षित है।

आपको क्या पता होना चाहिए कि यदि कोई अन्य उपयोगकर्ता किसी अन्य उपयोगकर्ता की सत्र कुकी पकड़ लेता है, तो वे सत्र के समय तक उस उपयोगकर्ता की नकल करने में सक्षम होंगे। सत्रों को आईपी से जोड़ने का एक आसान समाधान है।

+0

चेक करें @ चार्ल्स [उत्तर] (https://security.stackexchange.com/questions/14093/why-is-passing-the- सत्र-id-as-url-parameter-insecure#14094)। "एक आईपी पते पर एक सत्र लॉक करने से गलती से लोगों को अलग कर सकते हैं।" – another