2012-07-24 16 views
31

में कनेक्शन स्ट्रिंग एन्क्रिप्ट करें मुझे app.config में कनेक्शन स्ट्रिंग एन्क्रिप्ट करने में समस्या हो रही है। मेरे पास कोड है जो app.config के कनेक्शनस्ट्रिंग अनुभाग की सुरक्षा करेगा, लेकिन पासवर्ड अभी भी सादे पाठ में प्रदर्शित होता है।app.config

मुझे कनेक्शन स्ट्रिंग को एन्क्रिप्ट करने की आवश्यकता है ताकि तैनात किए जाने पर यह सादा पाठ में न हो। मैं web.config के लिए SO पर समान प्रश्न देखता हूं, लेकिन app.config नहीं।

+0

ध्यान रखें कि यदि आप ProtectSection() का उपयोग करें और अपने connectionstring एन्क्रिप्ट, मैं बस अपने एन्क्रिप्टेड .config फ़ाइल कॉपी कर सकते हैं, अपने आवेदन के साथ उपयोग करें और UnprotectSection फोन()।यह मुझे सादा पाठ में अपना मूल कनेक्शनस्ट्रिंग वापस दे देगा। –

उत्तर

19

This Article पर एक नज़र डालें, इसमें कुछ बहुत उपयोगी उदाहरण हैं। आप मूल रूप से यहां आपकी सहायता के लिए System.Configuration.SectionInformation.ProtectSection खोज रहे हैं।

इसके अलावा आप क्रिप्ट एल्गोरिथ्म, वर्ग System.Security.Cryptography.Rijndael में लागू का उपयोग कर सकते Implementing Protected Configuration

+2

क्या यह विधि डेटासेट्स और टेबल एडाप्टर के अंदर उपयोग करने योग्य है? वे आपके app.config में संग्रहीत कनेक्टिंगस्ट्रिंग का चयन करें .. यदि यह एन्क्रिप्टेड है तो यह स्वचालित रूप से स्वचालित रूप से डिक्रिप्ट हो जाएगा ?? –

-1

पर एक नज़र है। यह बहुत शक्तिशाली एन्क्रिप्टिंग स्कीमा है जो किसी विशेष पासवर्ड के आधार पर बाइट्स को अन्य बाइट्स में परिवर्तित करता है।

this example पर एक नज़र डालें।

+6

आप पासवर्ड कैसे सुरक्षित करते हैं? – Dan

35

आप वेब.कॉन्फिग के रूप में आसानी से उसी समाधान को लागू कर सकते हैं, आपको बस web.config पर अपने app.config का नाम बदलना होगा, aspnet_regiis टूल से एन्क्रिप्ट करें और उसके बाद इसे app.config पर पुनर्नामित करें।
%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" c:\<folder containing your web.config> (फ़ोल्डर स्तर पर बंद करो और पीछे डाल नहीं "\")

  • नाम बदलने web.config:

    1. नाम बदलें
    2. कमांड प्रॉम्प्ट खोलें और टाइप web.config को app.config वापस app.config

    आप इसे एन्क्रिप्टेड फ़ाइल देखने के लिए नोटपैड में खोल सकते हैं। दृश्य स्टूडियो में आप इसे डिक्रिप्ट देखेंगे। आप अपनी कनेक्शन स्ट्रिंग का उसी तरह उपयोग कर सकते हैं जैसे कि यह एन्क्रिप्ट नहीं किया गया था।

  • +4

    बिल्कुल सही! राइट टू दी पॉइंट! और डिक्रिप्ट के लिए: % windir% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis -pdf "कनेक्शनस्ट्रिंग्स" c: \ folder – Alex

    +4

    यह मेरे लिए काम करता है और स्वीकृत उत्तर से लागू करने के लिए बहुत आसान है। – mgnoonan

    +0

    लघु और साफ निर्देश! धन्यवाद!!!! –

    -4

    यह कोड मॉडल फर्स्ट के लिए उपयोगी है। 1 - इस तरह की एक कक्षा बनाएँ। app.config में सेट connectionstring = "" -

    class DataContext 
    { 
        public static AADOEEntities1 Context; 
    } 
    

    2 (AADOEEntities1 एक इकाई मॉडल है) - Program.cs

    using System; 
    using System.Collections.Generic; 
    using System.Collections; 
    using System.Linq; 
    using System.Data.Common; 
    using System.Data; 
    using System.Data.SqlClient; 
    using System.Data.EntityClient; 
    using System.Data.Metadata.Edm; 
    using System.IO; 
    namespace a 
         { 
         string providerName = "System.Data.SqlClient"; 
         string serverName = "."; 
         string databaseName = "AADOE"; 
    
         // Initialize the connection string builder for the 
         // underlying provider. 
         SqlConnectionStringBuilder sqlBuilder = 
          new SqlConnectionStringBuilder(); 
    
         // Set the properties for the data source. 
         sqlBuilder.DataSource = serverName; 
         sqlBuilder.InitialCatalog = databaseName; 
         sqlBuilder.IntegratedSecurity = true; 
         sqlBuilder.UserID = "sa"; 
         sqlBuilder.Password = "123456"; 
    
         // Build the SqlConnection connection string. 
         string providerString = sqlBuilder.ToString(); 
    
         // Initialize the EntityConnectionStringBuilder. 
         EntityConnectionStringBuilder entityBuilder = 
          new EntityConnectionStringBuilder(); 
    
         //Set the provider name. 
         entityBuilder.Provider = providerName; 
    
         // Set the provider-specific connection string. 
         entityBuilder.ProviderConnectionString = providerString; 
    
         // Set the Metadata location. 
         entityBuilder.Metadata = @"res://*/mdlAADOE.csdl| 
             res://*/mdlAADOE.ssdl| 
             res://*/mdlAADOE.msl"; 
    
         EntityConnection conn = 
          new EntityConnection(entityBuilder.ToString()); 
    
         DataContext.Context = new AADOEEntities1(conn); 
    
         Application.Run(new frmLogin()); 
    } 
    

    3 में इस कोड डाल दिया।

    +0

    यह एक खराब कामकाज की तरह दिखता है। उदाहरण के लिए आप बाइनरी से स्रोत कोड प्राप्त करने के लिए परावर्तक या समान का उपयोग कर सकते हैं -> आप क्रेडेंशियल – zozzancs

    1

    config फ़ाइल

    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
    

    के स्थान को परिभाषित करता है, तो आप एन्क्रिप्ट करने के लिए connectionStrings

    config.ConnectionStrings.SectionInformation.ProtectSection(Nothing); 
    

    अगर आप AppSettings

    एन्क्रिप्ट करना चाहते हैं आप अनुप्रयोग config भाग

    इतना के बारे में पता होना चाहिए चाहते हैं

    config.AppSettings.SectionInformation.ProtectSection(Nothing); 
    

    enter image description here

    +0

    देखेंगे यह काम करता है, लेकिन मेरे मामले में मुझे "कुछ भी नहीं" को "DataProtectionConfigurationProvider" में बदलना पड़ा –