在我重新发明轮子之前,是否有一种标准方法来至少隐藏 SQL Server 连接字符串中的密码?
(使用 C# 编写)
我的应用程序是高度多线程的,并且知道多个数据库。为了帮助故障排除和调试,在各种位置记录连接字符串。我无法控制使用该产品的客户使用什么连接字符串,因此在其中找到密码并不罕见。我知道这一点,因为人们经常开启 DEBUG 级别的日志记录并将日志文件与问题报告一起发送给我们,而这些日志包含他们的数据库密码(结果我们的支持票据系统包含密码)。
我意识到最佳实践是不要将密码放入连接字符串中,但是这部分超出了我的控制范围(除非我们改变应用程序,使其拒绝运行,如果您提供具有未加密密码的连接字符串...对我来说,这似乎有些龙套了)。
真正想记录的是:
Server=myServerAddress;Database=myDataBase;User Id=****;Password=*****;
我对用户ID/名称是否敏感或记录是否有用存在疑虑,欢迎对此发表评论。
我可以构建一个简单的正则表达式(例如/Password=[^;]+/
),但在此之前,我想看看是否有其他情况需要考虑,特别是如果已经完成了这项工作。
DbConnectionStringBuilder
轻松解析和操作连接字符串。 - mellamokb