2010-04-14 23 views
7

मुझे पता है कि वहाँ उपकरण हैं जो आपको एएसपीनेट व्यूस्टेट की सामग्री देखने देंगे। क्या ViewState की सामग्री को देखना और संशोधित करना संभव है यदि इसे <machineKey ... /> नोड को web.config में जोड़कर एन्क्रिप्ट किया गया है?क्या व्यूस्टेट मानों को डिक्रिप्ट करना और देखना संभव है?

उत्तर

10

निश्चित रूप से। व्यूस्टेट बस base64 एन्कोड किया गया है (जब तक कि आप निर्दिष्ट न करें कि इसे एन्क्रिप्ट किया जाना चाहिए)। यहां किसी ऐसे व्यक्ति का लिंक दिया गया है जिसने ViewState viewer लिखा था। यहां Fritz Onion द्वारा दूसरा है। आप शायद ViewState (यानी कोड के बाहर) को सीधे संशोधित करने में सक्षम नहीं होंगे क्योंकि एएसपी.नेट ने विशेष रूप से यह सुनिश्चित करने के लिए जांच की है कि ViewState के साथ कुछ भी छेड़छाड़ नहीं हुई है। अधिक के लिए EnableViewStateMAC सेटिंग देखें।

अद्यतन

लिंक रोट के लिए धन्यवाद, विभिन्न दर्शकों के लिए लिंक अब वैध नहीं हैं। हालांकि, "व्यूस्टेट व्यूअर" के लिए एक साधारण खोज इंटरनेट पर अन्य लोगों को मिल सकती है जैसे कि ASP.NET ViewState viewer

+5

सहमत हैं कि इस तथ्य को छोड़कर सवाल यह है कि अगर यह डिक्रिप्ट करना संभव है। मानते हैं कि एबे जानता है कि वह किस बारे में बात कर रहा है वह बेस 64 _encoding_ के बारे में बात नहीं कर रहा है, लेकिन _encrypted_ viewstate के बारे में जो बेस 64 का उपयोग करके एन्कोड किया गया है। प्रश्न यह नहीं है कि आप इसे डिक्रिप्ट नहीं कर सकते (यह पूरा बिंदु है) और नहीं, आप इसे बदल नहीं सकते हैं, भले ही आप कर सकें, मैक (संदेश प्रमाणीकरण कोड) विफल हो जाएगा और सर्वर – Henri

+1

@ हेनरी को अस्वीकार कर देगा - मेरा मानना ​​है कि अबे उसके बारे में बात कर रही है अपनी साइट, किसी और का नहीं। यदि यह आपकी साइट है और आप 'machineKey' तत्व में 'डिक्रिप्शनकी' विशेषता निर्दिष्ट करते हैं, तो आप इसे एन्क्रिप्ट करने के लिए उपयोग किए गए व्यूस्टेट को डिक्रिप्ट करने के लिए उसी माध्यम का उपयोग कर सकते हैं (चाहे यह एन्क्रिप्ट किए जाने से पहले या उसके बाद एन्कोडेड बेस 64 है या नहीं। पता नहीं) क्योंकि आप कुंजी जानते हैं। यदि आप 'डिक्रिप्शनकी' निर्दिष्ट नहीं करते हैं, तो यह स्वतः उत्पन्न होता है और मुझे संदेह है कि उस कुंजी को प्राप्त करने का साधन है। यदि आप 'enableViewStateMAC' अक्षम करते हैं (जो निश्चित रूप से, आपको कभी नहीं करना चाहिए) को आप कोड के बाहर 'व्यूस्टेट' को बदल सकते हैं। – Thomas

+1

धन्यवाद हेनरी, यही मेरा मतलब था। यदि आप इसे एक उत्तर के रूप में पोस्ट करना चाहते हैं तो मैं इसे स्वीकार करूंगा। –

1

कृपया यहाँ How to decode viewstate मैं viewstate स्ट्रिंग से StateBag प्राप्त करने के लिए पूर्ण स्रोत कोड प्रदान की है में एक बार देख ले। एन्क्रिप्टेड राज्यों को एक ही विधि का उपयोग करके डिक्रिप्ट करना भी संभव है लेकिन कुंजी असाइन करना भी संभव है।

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