如何隐藏我的密码在我的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文件并查看配置设置来查看。
我需要的是一种让黑客无法看到密码的方法。但同时,让它可自定义,以便在部署到另一个数据库时可以对其进行更改。
您有许多选择-我知道的那些(按首选顺序):
- 使用集成(SSPI)安全,您不需要在配置文件中包含密码
- 加密连接字符串(参见使用受保护的配置加密配置信息)
- 将用户名和密码分开存储,并使用字符串格式化来构造完整的连接字符串,
例如,连接字符串可能是这样的:
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");
}
您可以加密连接字符串-然后当您访问连接字符串时,解密它。这并不是万无一失的,因为您会遇到在哪里存储密钥以解密连接字符串的问题!