2012-01-06 12 views
6

मैं अपनी कनेक्शन स्ट्रिंग को कैसे सुरक्षित रख सकता हूं? मैं सी # में इकाई फ्रेमवर्क 4.1 (पहला कोड) का उपयोग करना चाहता हूं, लेकिन मेरे लिए यह महत्वपूर्ण है कि अन्य लोग मेरा कनेक्शन स्ट्रिंग नहीं देख सकें।इकाई ढांचे में कनेक्शन स्ट्रिंग एन्क्रिप्ट करें (पहला कोड)

उत्तर

7

ईएफ या किसी अन्य ओआरएम का उपयोग करने के बीच कोई अंतर नहीं है, तो आप कनेक्शन कॉन्स्ट्रिंग को एन्क्रिप्ट करने के मानक तरीके का उपयोग कर सकते हैं और ईएफ संदर्भ के प्रारंभिक कॉल को कॉल करने से पहले इसे डीक्रिप्ट करना स्वचालित रूप से होगा।

+0

से पासवर्ड पार्स करने के लिए इस्तेमाल किया समारोह –

3

आप (DBContext या IdentityDbContext ASPNET पहचान का उपयोग करता है, तो) संदर्भ कक्षा से कनेक्शन स्ट्रिंग के लिए कॉल को गिरफ्तार करने और कनेक्शन संशोधित कर सकते हैं स्ट्रिंग वापस आ गया। मेरे मामले में, संपूर्ण कनेक्शन स्ट्रिंग को एन्क्रिप्ट करने की बजाय, मैंने बस पासवर्ड एन्क्रिप्ट करना चुना। आप संपूर्ण कनेक्शन स्ट्रिंग को एन्क्रिप्ट करने के लिए एक ही दृष्टिकोण का उपयोग कर सकते हैं।

नोट: समारोह (StringCipher.Decrypt) एन्क्रिप्ट करने के लिए प्रयोग किया जाता है और डिक्रिप्ट इस सूत्र से आया है ->https://stackoverflow.com/a/1344255/1390025

स्थान है जहां आप कनेक्शन स्ट्रिंग

 public YourDB() 
     : base(GetSqlConnection("DefaultConnection")) 
    {} 

करने के लिए कॉल की गिरफ्तारी से ऊपर में परिदृश्य मुझे app.config या web.config से कनेक्शन स्ट्रिंग मिल रही है। हालांकि, आपके अनुरोध के अनुसार, आप संपूर्ण कनेक्शन स्ट्रिंग को एन्क्रिप्ट कर सकते हैं और नीचे दिए गए उदाहरण की तरह;

public YourDB() 
     : base(StringCipher.Decrypt("your-encrypted-connection-string", "passphrase-used-to-encrypt")) 
    {} 

परिदृश्य में जहाँ केवल पासवर्ड एन्क्रिप्टेड है में, समारोह नीचे सादा पाठ के साथ एन्क्रिप्टेड पासवर्ड बदल देता है और कनेक्शन स्ट्रिंग रिटर्न;

 public static string GetSqlConnection(string connectionStringName = "DefaultConnection") 
    { 
     // optionally defaults to "DefaultConnection" if no connection string name is inputted 
     string connectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; 
     string passPhrase = "passphrase-used-to-encrypt"; 
     // decrypt password 
     string password = get_prase_after_word(connectionString, "password=", ";"); 
     connectionString = connectionString.Replace(password, StringCipher.Decrypt(password, passPhrase)); 
     return connectionString; 
    } 

आपकी मदद और लिंक के लिए एक बहुत tnkx कनेक्शन स्ट्रिंग

 public static string get_prase_after_word(string search_string_in, string word_before_in, string word_after_in) 
    { 
     int myStartPos = 0; 
     string myWorkString = ""; 

     // get position where phrase "word_before_in" ends 

     if (!string.IsNullOrEmpty(word_before_in)) 
     { 
      myStartPos = search_string_in.ToLower().IndexOf(word_before_in) + word_before_in.Length; 

      // extract remaining text 
      myWorkString = search_string_in.Substring(myStartPos, search_string_in.Length - myStartPos).Trim(); 

      if (!string.IsNullOrEmpty(word_after_in)) 
      { 
       // get position where phrase starts in the working string 
       myWorkString = myWorkString.Substring(0, myWorkString.IndexOf(word_after_in)).Trim(); 

      } 
     } 
     else 
     { 
      myWorkString = string.Empty; 
     } 
     return myWorkString.Trim(); 
    } 
संबंधित मुद्दे