2010-04-11 14 views
7

जबकि मैं सत्र अपहरण लेखों के बारे में पढ़ रहा था, मैंने सीखा कि एक कुकी में संग्रहीत सत्र आईडी मान एन्क्रिप्ट करना अच्छा होगा।कुकी में सत्र आईडी एन्क्रिप्ट कैसे करें?

जहां तक ​​मुझे पता है, जब मैं session_start() पर कॉल करके सत्र शुरू करता हूं, तो PHP कुकी में सत्र आईडी मान एन्क्रिप्ट नहीं करता है।

मैं सत्र आईडी मान को कैसे एन्क्रिप्ट कर सकता हूं और उसके बाद सत्र प्रारंभ कर सकता हूं?

+0

क्या कोई व्यक्ति 'सत्र-एन्क्रिप्ट' टैग हटा सकता है? –

+0

@smotchkiss // मैं इसके बारे में भी सोच रहा था। अस्पष्ट टैग नाम के लिए खेद है। – Moon

+0

मुझे पता है कि यह प्रति प्रश्न आपके प्रश्न का उत्तर नहीं देता है। लेकिन क्या आपने सत्र आईडी के साथ आईपी संग्रहित करने और सत्र पढ़ने के दौरान आईपी की जांच करने पर विचार किया है। इस तरह आप उचित रूप से सुनिश्चित कर सकते हैं कि सत्र आईडी प्रदान करने वाला कंप्यूटर वही है जिसे आपने सत्र जारी किया था। – Voltin

उत्तर

18

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

+0

बस (उम्मीद है) ओपी के लिए स्पष्ट करें - * सत्र * जिसमें कुकी स्थानांतरित की जाती है, अभी भी एन्क्रिप्ट की जानी चाहिए, और कुकी ध्वज HTTP केवल अनएन्क्रिप्टेड चैनलों पर अपने स्थानांतरण को रोकने के लिए सेट किया जाना चाहिए। संचार चैनल को उचित रूप से एन्क्रिप्ट करना जिस पर सत्र कुकी परिवहन की जाती है, हमलावर को कुकी को रोकने के लिए कठिन बनाता है। – atk

+0

प्रश्न कोकी स्वयं को एन्क्रिप्ट करने के बारे में था, यानी ब्राउज़र द्वारा संग्रहीत मूल्य। मैं सहमत हूं कि कुछ अनुप्रयोगों के लिए यातायात को एन्क्रिप्ट करना सार्थक है। मुझे लगता है कि आप सुरक्षित ध्वज का मतलब है, नहीं (बस) HTTP केवल। –

+0

धन्यवाद। इस उत्तर ने समस्या डोमेन को समझने में मदद की। अब मेरे पास https में एक समाधान है और जहां प्रत्येक आईडी के लिए सत्र आईडी प्रतिस्थापित की जाती है। – nalply

3

मान लें कि आपकी सत्र कुकी एक GUID है, इसमें कोई एन्क्रिप्ट नहीं है। यह सिर्फ एक छद्म-यादृच्छिक स्ट्रिंग को दूसरे के साथ बदल देगा।

1

दुर्भाग्य से सत्र आईडी एन्क्रिप्ट करने से सुरक्षा में वृद्धि नहीं होगी, क्योंकि हमलावर केवल एन्क्रिप्टेड फॉर्म का उपयोग कर सकता है (जो कि वैसे भी उनके लिए दृश्यमान है)।

एकमात्र चीज जो इसे रोक सकती है वह चाल है जहां आप किसी को एक लिंक भेजते हैं? PHPSESSID = foo इसमें, जिससे PHP उस सत्र को बनाने का कारण बनता है। आप एन्क्रिप्शन और सत्यापन का उपयोग कर इसे रोक सकते हैं, लेकिन आपको यूआरएल में पूरी तरह से सत्र आईडी स्थानांतरण बंद करना चाहिए।

+0

मेरा मानना ​​है कि सिर्फ session.use_trans_sid (http://www.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid) अक्षम रखना इसे रोकने के लिए पर्याप्त है। –

+0

हां, यह है। सौभाग्य से यह डिफ़ॉल्ट रूप से अक्षम है। –

5

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

1

इस स्क्रिप्ट को बनाएं, इसे किसी वेब ब्राउज़र से एक्सेस करें, फिर अपनी कुकीज़ जांचें।

<?php 
    session_start(); 
?> 

आप की संभावना इस

Site   Cookie  Value 
mysite.com PHPSESSID 6fktilab3hldc5277r94qh2204 

पीएचपी की तरह कुछ देखेंगे एक ठीक काम करता है, तो एक अच्छा, विशिष्ट आईडी पैदा होता है। इसे एन्क्रिप्ट करने में कोई बात नहीं है।

+0

यह पोस्टर के प्रश्न को बिल्कुल संबोधित नहीं करता है? – zombat

+0

@ ज़ोंबैट, मैं बस यह दिखा रहा था कि PHP '5' का 'PHPSESSID' उत्पन्न नहीं करता है या ओपी की तरह पूरी तरह कमजोर कुछ सोच रहा था। –

1

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

ध्यान रखें कि यदि आपका एप्लिकेशन खुलासा हुआ है, तो आप अकेले सत्र आईडी के साथ उतने अच्छे हैं क्योंकि हैकर आसानी से पहचान सकता है कि आप किसके खिलाफ सत्यापन कर रहे हैं।

0

सत्र आईडी अपेक्षाकृत अप्रत्याशित है, इसलिए यह वास्तव में मुद्दा नहीं है।

  • एक नया सत्र बनाने
  • सीमा में किसी उपयोगकर्ता के प्रवेश सत्र की अवधि

रहे हैं जब:

वहाँ एक बातें आप इस से संबंधित कर सकते हैं हमलों प्रतिक्रिया करने के लिए कर रहे हैं कुछ अन्य चीजें भी।मैं हमेशा इन मुद्दों पर Rails Guide का अध्ययन करने की सलाह देता हूं - यह ज्ञात समस्याओं और प्रतिवादों का एक बहुत ही सुलभ स्पष्टीकरण प्रदान करता है - सभी समान रूप से PHP कोड पर लागू होते हैं।

0

संवेदनशील जानकारी संग्रहीत करने के लिए कुकीज़ का उपयोग करते समय कुकी डेटा एन्क्रिप्ट करना समझ में आता है। कि केवल सर्वर को पढ़ना चाहिए (डिक्रिप्ट)।

सत्र आईडी एन्क्रिप्ट करने का कोई कारण नहीं है, क्योंकि हैकर उस एन्क्रिप्टेड सत्र आईडी का उपयोग अपने शिकार का प्रतिरूपण करने के लिए कर सकता है।

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