gre*_*mac 5 .net c# sql-server security connection-string
在重新发明轮子之前,是否有一种标准方法可以在SQL Server连接字符串中隐藏至少一个密码?
(用C#编写)
我有一个高度多线程的应用程序,它知道多个数据库,因此为了帮助进行故障排除和调试,可以记录连接字符串的各个位置.我无法控制使用此产品的客户使用什么连接字符串,因此在其中找到密码并不常见.我知道这是因为它也并不少见,人们打开调试级记录,并给我们的日志文件有问题报告一起,这些日志中包含的数据库密码(和结果我们的支持票系统包含口令).
我知道最好的做法是不要把连接字符串中的密码,但一部分是出于我的控制(当然,除非我们改变我们的应用程序,所以它拒绝,如果你给它用未加密的密码连接字符串跑......这似乎对我来说有点严厉).
真的希望我想要它的日志是:
Server=myServerAddress;Database=myDataBase;User Id=****;Password=*****;
Run Code Online (Sandbox Code Playgroud)
(如果用户ID /名称是否是敏感信息,或者/或者对于日志记录是否有用 - 我对此表示欢迎).
我可以构建一个简单的正则表达式(例如/Password=[^;]+/),但在此之前,我只是想看看是否还有其他情况我不考虑,特别是如果已经完成的话.
好的,这个答案确实属于@mellamokb,但这是我使用的:
/// <summary>
/// Accepts a SQL Connection string, and censors it by *ing out the password.
/// </summary>
/// <param name="connectionString"></param>
/// <returns></returns>
public static string CensorConnectionString(string connectionString)
{
var builder = new DbConnectionStringBuilder() {ConnectionString = connectionString};
if (builder.ContainsKey("password"))
{
builder["password"] = "*****";
}
return builder.ToString();
}
Run Code Online (Sandbox Code Playgroud)
夫妻注意事项: