/ / Web.config कनेक्शन स्ट्रिंग एन्क्रिप्ट करते समय, कुंजी कहाँ संग्रहीत की जाती है? - सी #, एएसपीनेट, एन्क्रिप्शन, विन्यास, क्रिप्टोग्राफी

Web.config कनेक्शन स्ट्रिंग को एन्क्रिप्ट करते समय, कुंजी कहाँ संग्रहीत होती है? - सी #, एएसपीनेट, एन्क्रिप्शन, विन्यास, क्रिप्टोग्राफी

Web.config में कनेक्शन स्ट्रिंग को एन्क्रिप्ट करते समय, कुंजी कहाँ संग्रहीत होती है?

साथ ही, जब आप कनेक्शन स्ट्रिंग क्रेडेंशियल बदलते हैं तो आपको फिर से संकलित करने की आवश्यकता होती है?

उत्तर:

जवाब के लिए 2 № 1

इसके अनुसार यह दस्तावेज कॉन्फ़िगरेशन एन्क्रिप्ट करते समय आपके पास दो प्रदाता होते हैं:

  • RSAProtectedConfigurationProvider
  • DPAPIProtectedConfigurationProvider

मुझे डीपीएपीआई के बारे में बहुत कम ज्ञान है इसलिए मैं नहीं कर सकताइसके लिए या उसके खिलाफ कुछ भी कहो। जब मैंने web.config के एन्क्रिप्शन का उपयोग करने के लिए विचार किया तो मैंने आरएसए चुना और मेरे आरएसए एन्क्रिप्शन कुंजी को पकड़ने के लिए अन्य सीएसपी परिभाषित किया। आप इसे config.rotectedData तत्व में machine.config में सेट कर सकते हैं।

उल्लिखित पृष्ठ वर्णन करता है और आपको RSAProtectedConfigurationProvider का उपयोग कर web.config खंडों को एन्क्रिप्ट करने का मार्गदर्शन करता है। इस प्रदाता का उपयोग करते समय, आपके पास दो विकल्प हैं

  • मशीन-स्तर कंटेनर (आरएसए कुंजी में संग्रहीत किया जाएगा दस्तावेज़ और सेटिंग्स सभी उपयोगकर्ता अनुप्रयोग डेटा MicrosoftCryptoRSamachineKeys)
  • उपयोगकर्ता-स्तर कुंजी कंटेनर (आरएसए कुंजी में संग्रहीत किया जाएगा दस्तावेज़ और सेटिंग्स {उपयोगकर्ता नाम} अनुप्रयोग डेटाMicrosoftCryptoRSA)

गाइड तब वर्णन करता है कि इसका उपयोग कैसे करें aspnet_regiis.exe आपकी कॉन्फ़िगरेशन फ़ाइल के अनुभागों को एन्क्रिप्ट करने के लिए RSAProtectedConfigurationProvider के साथ टूल।

अपने दूसरे प्रश्न का उत्तर देने के लिए। आपको एप्लिकेशन को फिर से संकलित करने की आवश्यकता नहीं है लेकिन आपको अनुभाग (कनेक्शन स्ट्रिंग) को डिक्रिप्ट करना होगा, क्रेडेंशियल्स बदलना होगा और अनुभाग को फिर से एन्क्रिप्ट करना होगा। या web.config को नए से प्रतिस्थापित करें और फिर एन्क्रिप्ट करें।

कृपया ध्यान दें कि जब आप एक सेक्शन एन्क्रिप्ट करते हैंweb.config के समान मशीन पर एन्क्रिप्शन कुंजी होनी चाहिए। मार्गदर्शिका का उल्लेख है कि एक मशीन से आरएसए कुंजी को कैसे निर्यात करें और वेब खेतों में उपयोग के लिए इसे दूसरे पर आयात करें।

लेकिन इस बारे में एक पल के लिए सोचें: जब आपका एप्लिकेशन web.config को डिक्रिप्ट कर सकता है (क्योंकि इसे कनेक्शन स्ट्रिंग का उपयोग करने से पहले इसे करना है) तो कोई भी ऐसा कर सकता है (यदि वह मशीन पर जा सकता है)। मुझे पता है कि कुंजी का उपयोग करने की अनुमति आदि सेट आदि हो सकती है लेकिन आईएमएचओ कनेक्शन स्ट्रिंग में पासवर्ड का उपयोग करना गलत अभ्यास है।

एक अंतिम बात। aspnet_regiis.exe उपरोक्त मार्गदर्शिका में उल्लिखित टूल केवल web.config एन्क्रिप्ट कर सकता है। यदि आपके पास app.config है और इसे एन्क्रिप्ट करना चाहते हैं, तो देखें यह SO सवाल है.


जवाब के लिए 0 № 2

मैं दूसरे प्रश्न का उत्तर दे सकता हूं, लेकिन पहले नहीं।

कनेक्शन स्ट्रिंग क्रेडेंशियल्स को बदलने पर आपको फिर से संकलित करने की आवश्यकता नहीं है, क्योंकि web.config गतिशील रूप से भरा हुआ है।


जवाब के लिए 0 № 3

आप जहां चाहें इसे स्टोर कर सकते हैं, बस web.config में नहीं। सुझाव:
1. एक अलग विन्यास फाइल में।
2. रजिस्ट्री।
3. हार्ड कोडित।

मैं शायद पहले विकल्प के लिए जाना होगा।