如何隐藏我的密码在我的c#连接字符串

本文关键字:我的 密码 连接 字符串 何隐藏 隐藏 | 更新日期: 2023-09-27 18:10:00

我有以下连接字符串:

Data Source=Paul-HP'MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID=sa;Password=password

(. net网络服务)这显然可以通过打开app.config文件并查看配置设置来查看。

我需要的是一种让黑客无法看到密码的方法。但同时,让它可自定义,以便在部署到另一个数据库时可以对其进行更改。

如何隐藏我的密码在我的c#连接字符串

您有许多选择-我知道的那些(按首选顺序):

  1. 使用集成(SSPI)安全,您不需要在配置文件中包含密码
  2. 加密连接字符串(参见使用受保护的配置加密配置信息)
  3. 将用户名和密码分开存储,并使用字符串格式化来构造完整的连接字符串,

例如,连接字符串可能是这样的:

Data Source=Paul-HP'MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID={0};Password={1}

我选择选项1,如果不可能,那么选择2。为了完整起见,我提到了选项3。

你读过保护连接信息(ADO.NET)吗?

首先,不要使用"SA"账号。如果有人得到了密码,你的数据库就会被打开。使用自定义帐户,该帐户只允许在特定数据库上执行CRUD操作。

获得web.config的唯一方法是入侵您的服务器。如果他们那样做了,你就完蛋了。

可能是网络中最容易加密的连接字符串。配置或app.config

参见如何:在ASP中加密配置节。. NET 2.0使用DPAPI

建议对连接字符串进行解密。因此,必须手动设置连接字符串。

对于加密,请查看:http://dotnet-snippets.de/dns/encrypt-and-decrypt-strings-SID205.aspx

查看自定义设置:http://msdn.microsoft.com/en-us/library/8eyb2ct1.aspx

在运行时将Encrypted替换为正确的:

  public static void SetAppSettingValue(string Key, string Value)
   {
   System.Configuration.Configuration config == ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// Add an Application Setting.
 config.AppSettings.Settings[Key].Value = Value;
  // Save the changes in App.config file.
   config.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection("appSettings");
  }

您可以加密连接字符串-然后当您访问连接字符串时,解密它。这并不是万无一失的,因为您会遇到在哪里存储密钥以解密连接字符串的问题!