encryptionSQL连接stringc#

我创build了一个连接到sql 2005服务器的c#应用程序(而不是asp网页)。 在我的源代码中,这个sql-server的密码和用户标识在ConnectionString中被编码为纯文本。

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

有一个简单的方法来encryption密码或整个连接string,其他人谁反汇编我的工具无法看到密码?

谢谢

您应该将连接string存储在configuration文件中并encryption该部分。 请参阅http://www.4guysfromrolla.com/articles/021506-1.aspx或http://msdn.microsoft.com/en-us/library/89211k9b%28VS.80%29.aspx

有两种方法可以做到这一点:

1)您可以使用configuration安全部分来encryption和解密源代码中的连接:

 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执行encryption。

对于一个完整的关键转到 – > http://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx

不,你只能使它变得困难

让应用程序使用特殊的数据库login只能访问必要的表/程序更好。

您可以像web.config一样encryption app.config中的部分 。 MS将其称为受保护的configuration 。 由于encryption的数据和密钥都位于同一台机器上,所以它只会使得难度增大,但理论上并不是不可能得到数据。

您还可以将用户名和密码存储在registry中,而不是存储在configuration文件中。 尝试连接到数据库时,请从registry中读取用户名和密码。 请记住,您必须在存储在registry中时encryption用户名和密码,并在从registry中检索时解密用户名和密码。