2011-07-06 12 views
19

मैं आईएसआई 6 में होस्ट की गई मेरी एएसपी.NET 3.5 वेबसाइट के लिए सुरक्षा उपाय के रूप में व्यूस्टेट एन्क्रिप्शन हमेशा चालू करने का प्रयास कर रहा हूं। हमारे पास व्यूस्टेट बंद है लेकिन अभी भी इस स्ट्रिंग में कुछ "कंट्रोलस्टेट" दिखाई देता है। एक परीक्षण वातावरण में मैं बस web.config में निम्नलिखित सेट करने में सक्षम हूँ और मैं अब बेस 64 अर्द्ध प्लेन को viewstate को डिकोड कर सकते हैं:एएसपीनेट व्यूस्टेट एन्क्रिप्शन समस्या

<pages enableViewState="false" enableViewStateMac="true" viewStateEncryptionMode="Always">

मैं भी जोड़ लिया है निम्नलिखित (machine key generater द्वारा genereated) machine.config के लिए और अभी भी अपने परीक्षण सर्वर पर viewstate ठीक एन्क्रिप्ट करता है:

<machineKey validationKey="002..." decryptionKey="D90E..." validation="SHA1" decryption="AES" />

मेरे गैर परीक्षण वातावरण को सादे पाठ में viewstate मैं हमेशा बेस 64 डिकोड कर सकते हैं, जैसा कि ऊपर परिवर्तन लेने के लिए प्रतीत नहीं होता उपरोक्त सेटिंग्स के साथ। मैं हमेशा कोई बदलाव करने के बाद iisreset।

मेरी गैर-परीक्षण वेबसर्वर के बारे में कुछ जानकारी:

  • वेब फार्म/लोड संतुलित (लेकिन परीक्षण के लिए केवल एक ही सर्वर अभी)
  • Sql सत्र स्थिति (machine.config में machinekey शुरू में की जरूरत थी इसे सेट अप करने)
  • machine.config: उपयोग में लाने खुदरा = "true"

किसी को भी अतिरिक्त सेटिंग का asp.net viewstate एन्क्रिप्शन के साथ हस्तक्षेप कर सकते हैं देखने के लिए जहां का सुझाव कर सकते हैं?

संपादित करें: अब मेरे आईआईएस परीक्षण सर्वर पर मैं viewStateEncryptionMode सेटिंग को पूर्ववत नहीं कर सकता क्योंकि यह दृश्यमान को एन्क्रिप्ट कर रहा है, भले ही मैं इसे "कभी नहीं" पर सेट करता हूं और मेरी कोई भी अन्य वेबसाइट इस सेटिंग को पकड़ने लगती है। मैं कहां देख सकता हूं कि यह संपत्ति कहां से ओवरराइड हो रही है? क्या कोई सेटिंग है जहां यह सेटिंग संग्रहीत की जाती है जिसे साफ़ किया जाना चाहिए इसके अलावा जब मैं iisreset/www सेवा/touch machine.config को रोकूं तो क्या किया जाएगा?

अंतिम संपादित करें: कॉन्फ़िगरेशन फ़ाइलों का अध्ययन करने के कुछ दिनों बाद मैंने इसे छोड़ दिया और कोड के माध्यम से इसे कार्यान्वित किया। मेरे पास पहले से ही एक सुरक्षा मॉड्यूल था जो पेज इवेंट में संलग्न था इसलिए पेज_लोड में मैंने जोड़ा: पेज। रजिस्ट्रार रिक्वेयरव्यूस्टेटएन्क्रिप्शन();

मैं सच में पता है कि IIS6 तुरंत उठाया होने से इस सेटिंग को रोकने था प्यार होता। जब मैं स्थानीय रूप से कैसिनी चलाता हूं, तो यदि मैं व्यूस्टेट एन्क्रिप्शन मोड को पेज नोड के माध्यम से "हमेशा" पर सेट करता हूं तो मैं तुरंत इसे व्यूस्टेट को एन्कोड करता हूं और अतिरिक्त छिपे हुए फ़ील्ड को id = "__ VIEWSTATEENCRYPTED" के साथ प्रस्तुत करता हूं। जब मैं इसे "कभी नहीं" पर सेट करता हूं तो मैं तुरंत एन्क्रिप्शन बंद कर देता हूं। अगर मैं अपनी आईआईएस 6 होस्टेड वेबसाइट पर वेबसाइट पर वही सटीक परिवर्तन करता हूं, तो इसका कोई प्रभाव नहीं पड़ेगा, लेकिन अगर मैं वहां रहने की अनुमति देता हूं तो अंततः इसे पकड़ लिया जाएगा। मैं www सेवा को रोक/शुरू करूंगा, आईएस रीसेट कर दूंगा, एएसपीएनईटी टेम्प कैश साफ़ करूँगा लेकिन मुझे नहीं पता कि और क्या प्रयास करना है? उम्मीद है कि यह पोस्ट थोड़ी देर के लिए आरओटी कर सकता है और भविष्य में किसी को भी वही व्यवहार दिखाई देगा जो हम अनुभव करते हैं और हम इसे और समझ सकते हैं!

+5

यह पता चला है कि RegisterRequiresViewStateEncryption भी ViewstateMAC सत्यापन पर बदल जाता है भले ही मैं इसे स्पष्ट रूप से अपने web.config में गलत पर सेट करता हूं। चूंकि मेरी साइट एक कस्टम "एमवीसी" है जो वेबफॉर्म के शीर्ष पर बैठती है जहां मैं कभी-कभी पोस्ट पर विभिन्न पृष्ठों पर रीडायरेक्ट करता हूं, मेरे पास मैक सत्यापन नहीं हो सकता है। मैं सोच रहा हूं कि ViewStateMAC = false और ViewStateEncryption = true की मेरी web.config सेटिंग्स एक अच्छा संयोजन नहीं था। – felickz

उत्तर

1

Web.config page settings do not apply to pre-compiled ASP.Net application with updatable option disabled. यह थोड़ी देर हो गया है लेकिन मेरा परीक्षण सर्वर संभवतः अद्यतन करने योग्य विकल्प अक्षम के साथ तैनात किया गया था ... सबक सीखा।

देखें MSDN

इसी Question मैंने पूछा, एक ही मुद्दा।

2

मैं जानता हूँ कि यह एक समय हो गया है जब से तुम इस पोस्ट, लेकिन आप PageStatePersister का अपना स्वयं का कार्यान्वयन बनाने पर विचार किया है? PageStatePersister आपके पृष्ठ में एम्बेडेड व्यूस्टेट और कंट्रोलस्टेट डेटा स्वरूपित करने के लिए ज़िम्मेदार घटक है। यदि सुरक्षा आपकी प्राथमिक चिंता है तो आप जो भी एन्क्रिप्शन एल्गोरिदम का उपयोग कर सकते हैं, आप यह सुनिश्चित करना चाहते हैं कि आपका डेटा निजी बना रहता है। आपकी कॉन्फ़िगरेशन के आधार पर ऐसा लगता है कि आप एक सक्षम वातावरण में हैं, इसलिए स्पष्ट रूप से लोड-टेस्ट पहले।यह उल्लेखनीय भी है कि मुझे "क्लासिक" एएसपी.नेट वेबफॉर्म साइट में शामिल होने पर व्यूस्टेट में एमवीसी की स्तरित भागीदारी के बारे में कोई जानकारी नहीं है या अनुभव नहीं है।

शुभकामनाएं।

बी

+0

सुझाव के लिए धन्यवाद। मैंने कभी भी इस मार्ग की खोज नहीं की, सत्र में दृश्यस्थल डालने के कारण होने वाले सभी मुद्दों को देखकर मैं अपने पेजस्टेट प्रिंटर को घुमाने से दूर भाग गया। अगर मैं इसे वापस खोलता हूं तो मैं निश्चित रूप से सत्र को एन्क्रिप्ट करने के आपके विचार का पता लगाऊंगा। – felickz

0

मेरा अनुमान है कि लोड संतुलित वेब खेत भ्रम का स्रोत है। आपने कहा कि केवल "केवल एक सर्वर [परीक्षण] अभी परीक्षण के लिए है", लेकिन सभी लक्षण जो आप अनुभव कर रहे हैं ठीक उसी तरह होगा जैसे वेब फार्म में एकाधिक सर्वर चल रहे थे, लेकिन आपने केवल web.config बनाया और machine.config एक सर्वर पर बदलता है। जब आप अपने ब्राउज़र के साथ वेबसाइट पर जाते हैं, तो कभी-कभी आप एक सर्वर को दबाएंगे जो एक तरह से कॉन्फ़िगर किया गया था, कभी-कभी आप किसी अन्य सर्वर को कॉन्फ़िगर करते थे जो किसी अन्य तरीके से कॉन्फ़िगर किया गया था।

+0

उस विचार ने पूरे सप्ताह में कई बार अपने दिमाग को पार किया, मैंने इसके साथ खेलना बिताया। मैंने लगातार इसकी जांच की, और जब निराश मेरे देव सर्वर पर चले गए जो संतुलित लोड नहीं है। लेकिन आपके पास वैध बिंदु है और लोड संतुलित वातावरण में हर किसी के लिए यह समझना महत्वपूर्ण है – felickz