在.NET应用程序中管理DB访问密码



因此,我的任务是现代化一个内置的Visual Studio内置应用程序,该应用程序是我组织的收据匹配工具。最引起的问题之一是,它将其密码存储在app.config文件中,未加密和一部分源代码中存储在TFS中的源代码。连接字符串看起来与此相似:

 <!-- DEV -->
<add name="DEV_USER" connectionString="data source=DEVDB;user id=DEV_USER;password=*Password*;" providerName="System.Data.OracleClient"/>

关于如何在应用程序中仍在使用它们的同时在应用程序之外管理这些建议的任何建议?我也是.NET应用程序的新手,因此非常感谢任何建议。

如果您不想存储任何密码,则可以在运行时填充它们:

 <add name="DEV_USER" connectionString=" ..SNIP.. password={0};" ..SNIP.. />

然后使用string.Format(devConnectionString, realPassword)

您可以使用外部文件保存ConnectionsRings例如:

Databases.xml

使用这样的加密内容:

<?xml version="1.0" encoding="utf-8" ?>
<DATABASES>  
    <DataBase ConnStr="CKS27/1dfdsUJd3eKfdjvwxGUFGMtFKOWVv1FgffhGQ1uZGWk/PuPCogfOvWsYhdMWKQSfdtxg==">DBName</DataBase>  
    </DATABASES>

并在代码开始执行时使用它们。在该外部文件中,您可以以加密的方式将这些ConnectionsRing固定,并在需要时解密它们。Linq,EF和SQLConnection从代码中的ConnectionsRing设置所有支持设置。

例如:

doc = new XmlDocument();
            string fullFileName = System.Environment.CurrentDirectory + @"" + "Databases.xml";
            doc.Load(fullFileName);
foreach (XmlNode node in doc.DocumentElement.ChildNodes)
            {
                if (node.InnerText == DBName)
                {
                    string currConnStr = Decrypt(node.Attributes["ConnStr"].Value);
                    return currConnStr;
                }
            }

最新更新