2009-09-22 12 views
8

हाल ही में मैं अपने त्रुटि लॉग में इस देखा है (प्रति दिन 1, और मैं प्रतिदिन 40k आगंतुकों है):सत्र अपहरण या हमला?

[22-Sep-2009 21:13:52] PHP Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in /var/my_files/class.session.php on line 67 
[22-Sep-2009 21:13:52] PHP Warning: Unknown: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in Unknown on line 0 
[22-Sep-2009 21:13:52] PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct() in Unknown on line 0 

यह एक config मुद्दा है क्योंकि यह हर किसी के लिए काम कर रहा है नहीं है।

मैं पहले से ही इस के लिए php.ini संशोधित:

session.use_only_cookies = 1 
session.use_trans_sid = 0 

मैं एक सत्र अपहरण या हमले का एक प्रकार मैं के बारे में पता नहीं कर रहा हूँ पर शक (मैं Parano हूँ;))।

क्या आपको पता है कि यह क्या हो सकता है? सुरक्षा में सुधार करने और इससे बचने के लिए मैं क्या कर सकता हूं?

उत्तर

18

क्या शायद यहाँ किया जाता है कि इस ग्राहक PHPSESSID कुकी की सामग्री बदल गया है। आम तौर पर सत्र आईडी "62bf75fb02922cf9c83fb3521255b4ab" (हेक्साडेसिमल)

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

समाधान देखें:

$ok = @session_start(); 
if(!$ok){ 
    session_regenerate_id(true); // replace the Session ID 
    session_start(); // restart the session (since previous start failed) 
} 

, याद रखें कि आप की जगह या PHP सत्र कुकी के माध्यम से सर्वर पर एक फ़ाइल पर लिख नहीं सकता। यह तब होता है जब एक सत्र सफलतापूर्वक शुरू होता है, PHP वर्तमान सत्र के बारे में एक सत्र फ़ाइल लिखता है और इसे tmp फ़ोल्डर में संग्रहीत करता है। एक बार फ़ाइल पुरानी हो जाने के बाद, फ़ाइल हटा दी जाती है।

+0

बिल्कुल सही !!!! बहुत बहुत धन्यवाद!!! :) – Toto

+0

बिल्कुल कोई समस्या नहीं =) – mauris

1

सबसे अच्छा अनुमान है कि किसी के पास सत्र सत्र में खराब सत्र आईडी है और त्रुटि उत्पन्न हो रही है।

मैं नहीं देख सकता कि सत्र अपहरण के लिए कोई भी अमान्य सत्र आईडी का उपयोग कैसे करेगा।

आप त्रुटि पुन: पेश करना चाहते हैं:

<?php 
error_reporting(E_ALL); 
session_start(); 
session_id ("$"); 
+0

क्या व्यक्ति सर्वर पर फ़ाइल लिखने/प्रतिस्थापित करने की कोशिश कर रहा है? – Toto

+1

नहीं चिंता मत करो – mauris

+0

धन्यवाद मॉरीस। :) – Toto

3

यह स्पैमबॉट्स के कारण होने की संभावना है। मुझे लगता है कि बहुत सारे स्पैमबॉट्स को जीईटी पैरामीटर के रूप में सत्र आईडी भेजा जा रहा है, जिसे वे एसएमटीपी इंजेक्शन के लिए उपयोग करने या ईमेल भेजने के लिए प्रयास करते हैं। मैं अपने लॉग से कहीं सबूत खोजने की कोशिश करूंगा लेकिन मुझे पता है कि यह कम से कम एक दर्जन साइटों पर मेरे साथ हुआ है। जब मैंने इसे देखा, तो जीईटी वर्र्स इस तरह दिखते थे: [email protected]\n\subject:blah blah blah\n\nspam email here etc...

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