2012-04-25 10 views
7

मैं एक सत्र कुकी (नहीं कोई स्थायी पता नहीं) का उपयोग कर रहा प्रयोक्ता आईडी को बचाने के लिए जानना चाहते हैं कि उपयोगकर्ता के प्रवेश।उपयोगकर्ता कुकी स्टोर करने के लिए पर्याप्त सत्र कुकी सुरक्षित है?

मूल रूप से, उपयोगकर्ता के लॉग इन, हम साख चेक करें, फिर एक सत्र कुकी userID सेट = 37 (इस विशेष उपयोगकर्ता के लिए, किसी अन्य उपयोगकर्ता 73 या 69, आदि के लिए होता है ...)

Session.Add("UserID", 37); 

मेरे सवाल है, यह उपयोगकर्ता के प्रवेश किसी भी तरह 37 से 73 करने के लिए इस सत्र कुकी को बदलने के लिए संभव है और इस प्रकार सर्वर को यह सोचने में मूर्ख बनाते हैं कि वह वास्तव में उपयोगकर्ता 73 है? यदि हां, तो मैं गलत क्या कर रहा हूं, इस मामले को कैसे संभालना है? सत्र उपयोगकर्ता आईडी और पासवर्ड हैश में डालने के लिए पागल लगता है और उन्हें हर बार जांचें ??

हम बाद में इन उपयोगकर्ताओं को प्रतिबंधित करने के लिए प्रश्नों में इस उपयोगकर्ता आईडी मान का उपयोग कर रहे हैं।

मुझे खेद है कि यह एक सटीक कोड प्रश्न नहीं है, लेकिन यह मेरे कोड के लिए बहुत प्रासंगिक है।

उत्तर

6

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

यह कहा जा रहा है कि, उपयोगकर्ता आईडी से निपटने पर आप सत्र के साथ पहियों को पुनर्निर्मित करने के बजाय प्रमाणीकृत उपयोगकर्ताओं को ट्रैक करने के लिए forms authentication का उपयोग करने पर विचार कर सकते हैं।

+0

ओह। समझा। आप बिल्कुल सही है। मैं पूरी तरह से इसके बारे में भूल गया। तेजी से जवाब के लिए thnx बहुत कुछ। मुझे स्वीकार करने के लिए 12 मिनट का इंतजार करना है, लेकिन मैं करूँगा। – b0x0rz

+0

यदि सर्वर सर्वर पर संग्रहीत किया जाता है, तो क्या क्लाइंट ब्राउज़र को बंद कर देता है, या यह केवल कुंजी है जब सत्र वास्तव में हटा दिया जाता है? (पता नहीं है कि मैंने सही नामों का उपयोग किया है) – BjarkeCK

+0

@BjarkeCK, ग्राहक पर महत्वपूर्ण जीवन।एक कुकी में सत्र कुकीज़ लगातार नहीं होती है, जब उपयोगकर्ता ब्राउज़र बंद कर देता है तो कुकी खो जाएगी। दूसरी ओर का मूल्य सर्वर पर तब तक जारी रहेगा जब तक कि यह कचरा इकट्ठा न हो जाए। –

2

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

3

ASP.NET सत्र स्थिति में है कि वास्तविक राज्य सर्वर साइड पर संग्रहीत किया जाता है और ग्राहक और अन्य नेटवर्क संस्थाओं HTTP अनुरोध पथ साथ पर उजागर नहीं ग्राहक राज्य प्रबंधन तकनीकों पर एक महत्वपूर्ण सुरक्षा लाभ प्रदान करता है। हालांकि, सत्र सुरक्षा के कई महत्वपूर्ण पहलू हैं जिन्हें आवेदन सुरक्षा को बनाए रखने के लिए विचार किया जाना चाहिए। सुरक्षा सर्वोत्तम प्रथाएं तीन प्रमुख श्रेणियों में आती हैं: सत्र आईडी स्पूफ़िंग और इंजेक्शन को रोकना, बैक-एंड में राज्य संग्रहण को सुरक्षित करना और समर्पित या साझा वातावरण में सत्र स्थिति परिनियोजन सुरक्षा सुनिश्चित करना।

पढ़ें: Securing Session State

+0

हाँ, जो कवर किया गया है :) उम्मीद है;) – b0x0rz

0

के रूप में अन्य उत्तर उल्लेख किया है, वास्तविक मूल्य (उदाहरण में 37) सर्वर, नहीं ग्राहक पर संग्रहीत है, लेकिन इसका मतलब यह नहीं है कि आप के लिए प्रतिरक्षा हो संभावित हमले यह तंत्र अभी भी साइट स्क्रिप्टिंग हमलों को पार करने के लिए कमजोर है। असल में, ग्राहक की कुकी पर जो संग्रहीत किया जाता है वह कुछ बड़ा लंबा पहचानकर्ता होता है। यदि वास्तविक उपयोगकर्ता के अलावा कोई अन्य व्यक्ति उस पहचानकर्ता की पकड़ लेता है तो वे उसे स्वयं की कुकी में डाल सकते हैं और अनिवार्य रूप से उस उपयोगकर्ता होने का नाटक कर सकते हैं। आप क्रॉस साइट स्क्रिप्टिंग को अपने आप पर अधिक शोध कर सकते हैं (मैं विषय पर एक विशेषज्ञ नहीं हूं) कुछ सामान्य तरीकों को देखने के लिए कि एक दुर्भावनापूर्ण उपयोगकर्ता अन्य उपयोगकर्ताओं की कुकीज़ को देखने का प्रयास करेगा और इसे स्वयं के रूप में सेट करने का प्रयास करेगा , इस तरह के हमलों के खिलाफ बचाव के तरीकों के साथ (जिनमें से कुछ मुझे यकीन है कि ब्राउज़र और एएसपी द्वारा आपके लिए किया जाएगा)।

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