2010-01-29 87 views
16

我創建了一個連接到sql 2005服務器的c#應用程序(不是asp網頁)。在我的源代碼中,此sql-server的密碼和用戶標識在ConnectionString中被編碼爲純文本。加密SQL connectionstring c#

SqlConnection con = new SqlConnection(); 
con.ConnectionString = 
     "Data Source=server1;"+ 
     "Initial Catalog=mydatabase;"+ 
     "Integrated Security=no;"+ 
     "User ID=admin;Password=mypassword;"; 
con.Open(); 

有沒有一種簡單的方法來加密密碼或全ConnectionString的,那誰拆開我的工具,其他人無法看到密碼?

感謝

回答

0

您可以按照與web.config相同的方式在app.config中輸入encrypt sections。 MS稱其爲Protected Configuration。由於加密數據和密鑰都駐留在同一臺機器上,它只會使其更難,但從理論上講,並不是不可能得到數據。

1

不行,你只能使其難以

這是更好地讓應用程序使用一個特殊的數據庫登錄,只有已取得了必要的表/程序。

4

有這樣做的方法有兩種:

1)您可以使用配置安全部分的加密並從源代碼解密連接strimng:

try 
    { 
     // Open the configuration file and retrieve 
     // the connectionStrings section. 
     Configuration config = ConfigurationManager. 
      OpenExeConfiguration(exeConfigName); 

     ConnectionStringsSection section = 
      config.GetSection("connectionStrings") 
      as ConnectionStringsSection; 

     if (section.SectionInformation.IsProtected) 
     { 
      // Remove encryption. 
      section.SectionInformation.UnprotectSection(); 
     } 
     else 
     { 
      // Encrypt the section. 
      section.SectionInformation.ProtectSection(
       "DataProtectionConfigurationProvider"); 
     } 
     // Save the current configuration. 
     config.Save(); 

     Console.WriteLine("Protected={0}", 
      section.SectionInformation.IsProtected); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 

2)您可以企業庫數據訪問應用程序塊使用RSAProtectedConfigurationProvider或DPAPIProtectedConfigurationProvider執行加密。

對於一個完整的articvle進入 - >http://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx

+1

謝謝,但我不知道如何實現這一點。我只是有一個DLL創建了我的C#項目 - 沒有exe和沒有app.config?此DLL也必須用於不同的計算機和用戶! – Tobi 2010-01-29 07:55:11

+0

一種方法是,您可以創建一個XML文件並在其中存儲您的設置。然後,您可以將該XML保存在每個部署計算機的某個特定位置,然後您可以閱讀它。最好的技術之一是使用自定義配置管理器,即管理配置項目的不同類庫,並且您的主DLL將引用該配置項,或者您可以使用企業庫中存在的配置塊。 – Bhaskar 2010-01-29 08:32:32

-3

您還可以存儲在註冊表中,而不是在配置文件中存儲的用戶名和密碼。嘗試連接到數據庫時,請從註冊表中讀取用戶名和密碼。請記住,您必須在存儲在註冊表中時加密用戶名和密碼,並在從註冊表中檢索時解密用戶名和密碼。

+1

在註冊表中存儲純文本信息與配置文件沒有多大區別。只有當你考慮到你正在阻止的威脅時,這才更有安全感。如果他們已經有權訪問該文件,則很可能他們有權訪問該註冊表項。他們知道他們在找什麼。 – 2011-08-05 20:46:30

+0

,但OP明確指出'請記住您必須加密用戶名和密碼' – 2011-09-22 07:51:56

+0

應用程序配置文件(app.config和web.config)專門用於包含此類信息。因此,使用這些文件而不是使用Windows註冊表來管理用戶/密碼,連接字符串和所有其他應用程序設置會更加高效和簡單。特別是在具有ASP.NET應用程序的服務器環境中。 – 2014-11-04 10:16:28