2011-01-24 18 views
5

MSDN और एमसीटीएस स्वयं-प्रशिक्षण प्रशिक्षण के अनुसार, एएसपीनेट क्लाइंट-साइड स्टेट मैनेजमेंट के लिए छिपे हुए फ़ील्ड का उपयोग कर सकता है। पुस्तक सामग्री कहती है कि व्यू-स्टेट छुपा फ़ील्ड की तुलना में अधिक सुरक्षित है क्योंकि डेटा एन्क्रिप्ट किया गया है।छुपे हुए फ़ील्ड क्लाइंट साइड स्टेट मैनेजमेंट क्यों मानते हैं?

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

<asp:Label ID="Label1" Visible="false" runat="server">secret info</asp:Label> 

एचटीएमएल इनपुट फ़ील्ड के साथ इसकी तुलना करें। यहां, ग्राहक राज्य की जानकारी समझ में आता है।

<input id="Text2" type="text" style="visibility:hidden;" value="secret 99" /> 

तो सौदा क्या है?

उत्तर

7

जब आप .net में एक लेबल बनाने और इसे छिपा के लिए दृश्यता है निर्धारित करते हैं, यह ग्राहक के लिए प्रस्तुत नहीं होती और इसके डेटा viewstate में संग्रहित है।

इसलिए, यह viewstate के रूप में यह viewstate उपयोग कर रहा है डेटा बनाए रखने के लिए की तुलना में "अधिक" सुरक्षित नहीं है।

छिपा क्षेत्रों के बारे में, वहाँ चार प्रकार के होते हैं: सबसे पहले ऊपर नियमित HTML एक जो केवल प्रकार छिपा के एक इनपुट है। इसमें कोई दृश्य प्रतिपादन नहीं है हालांकि यह HTML में है। इसमें कोई भी दृश्यमान गुण नहीं है।

<input id="MyId" type='hidden' value='whatever' /> 

दूसरा एक एक सीएसएस संपत्ति के रूप में यह अंकन के साथ एक नियमित रूप से इनपुट है छिपा: के रूप में यह घोषित किया जाता है तो CSS अक्षम है या अन्यथा ओवरराइड है तो नियंत्रण उपयोगकर्ता को नहीं दिखाई जाएगी। इसके अलावा एक प्रकार = 'छुपा' के समान चीज़ के करीब है।

<input id='MyId' type='text' value='whatever' style='visibility:hidden' /> 

तीसरा एक .Net छुपा क्षेत्र है। इसमें व्यूस्टेट स्टोरेज है, लेकिन यह एचटीएमएल में एक नियमित छिपे हुए क्षेत्र को उत्पन्न करने का भी कारण बनता है।

<asp:HiddenField id='MyId' runat='server' value='whatever' /> 

और चौथा एक नियमित .NET टेक्स्ट बॉक्स है जो दृश्यमान नहीं है।

<asp:TextBox id='MyId' runat='server' Text='whatever' Visible='False' /> 

.नेट वाले डेटा को दृश्यस्थल में रखा जाएगा। एचटीएमएल वाले नहीं हैं। यदि आप किसी नेट नियंत्रण पर दृश्यमान = गलत सेट करते हैं तो यह क्लाइंट को प्रदान नहीं किया जाता है, हालांकि इसका डेटा आमतौर पर व्यूस्टेट में संग्रहीत होता है।

वहाँ पेज में डेटा फेंकने के अन्य तरीके हैं, लेकिन वे इसके बाद के संस्करण की derivations हैं।

सामान्यतया अगर आपको लगता है कि आपके जावास्क्रिप्ट कोड की जरूरत है एक मूल्य है, लेकिन आप ग्राहक को प्रदर्शित करने के लिए तो आप एक छिपी हुई फ़ील्ड का उपयोग की जरूरत नहीं है (HTML या .net)। यदि आपके पास कोई गुप्त मूल्य है तो आम तौर पर आप यह नहीं चाहते हैं कि यह संभवतः क्लाइंट पक्ष में जाए। और इसका मतलब है कि इसे देखने के लिए भी बाहर रखा गया है। एक साइड नोट के रूप में, व्यूस्टेट "सुरक्षा" पर निर्भर न हों, वहां उपकरण हैं जो आसानी से इसे डिक्रिप्ट करेंगे।

+0

आह! तो वह गुप्त सॉस है। धन्यवाद क्रिस –

3

एक फ़ील्ड जिसमें प्रदर्शित नहीं किया जाता एक छिपी हुई फ़ील्ड नहीं है (भले ही यह "छिपा" है)।

छिपे हुए क्षेत्र <input type="hidden" name="somename" value="somevalue" /> फ़ील्ड हैं। और उन उपयोगकर्ताओं द्वारा छेड़छाड़ की जा सकती है।

+0

लेकिन लेबल और एचटीएमएल इनपुट का उपयोग उसी सटीक तरीके से नहीं किया जा सकता है? ऐसा क्यों है कि छुपे हुए फ़ील्ड क्लाइंट और सर्वर साइड टेक्नोलॉजी दोनों नहीं माना जाता है? –

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