【问题标题】:Managing DB Access Passwords in a .NET Application? [duplicate]在 .NET 应用程序中管理数据库访问密码? [复制]
【发布时间】:2019-07-16 18:02:16
【问题描述】:

因此,我的任务是对内置于 Visual Studio 中的 .NET 应用程序进行现代化改造,该应用程序用作我组织的收据匹配工具。最突出的问题之一是它将用于非 prod 和 prod 数据库访问的密码存储在 app.config 文件中,未加密并且部分源代码存储在 TFS 中。连接字符串如下所示:

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

关于如何在应用程序外部管理这些同时仍在内部使用它们的任何建议?我对 .NET 应用程序也很陌生,因此非常感谢任何建议。

【问题讨论】:

    标签: c# .net oracle visual-studio passwords


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您可以使用外部文件来保存连接字符串 例如:

      Databases.xml
      

      加密内容如下:

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

      并在您的代码开始执行时使用它们。在该外部文件中,您可以以加密方式保存这些连接字符串,并在需要时对其进行解密。 Linq、EF 和 SqlConnection 都支持在代码中设置 ConnectionStrings。

      例如:

      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;
                      }
                  }
      

      【讨论】:

      • 但是你应该知道每个人都可以编写一个小应用程序,在这个加密的字符串上调用Decrypt(...)。另请注意,Encrypt() 与用户相关联,即如果您使用您的用户帐户加密密码,那么您不能在任何其他具有不同用户的机器上使用它。
      猜你喜欢
      • 1970-01-01
      • 2011-10-22
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多