【问题标题】:What is the best practice for storing database connection details in .NET?在 .NET 中存储数据库连接详细信息的最佳做法是什么?
【发布时间】:2010-11-19 14:47:31
【问题描述】:

这可能是重复的 (question),但我正在寻找 .NET 最佳实践。

如何安全地存储数据库连接字符串、用户名和密码等?在大多数情况下,加密的 app.config 是否最好?

我还希望能够在配置文件中设置密码,然后在应用程序启动后立即对其进行加密。 (我不是在寻求解决方案,因为我之前已经解决了这个问题,我只是在寻找最佳实践)。

我也对您有很好经验的替代解决方案感兴趣。

【问题讨论】:

    标签: c# .net database .net-3.5


    【解决方案1】:

    我认为最好的做法是尽可能使用集成安全性,原因有两个……这是最容易管理的解决方案,也是最容易做到正确的解决方案。

    如果由于某种原因您无法使用集成安全性,而您必须使用用户名和密码对其进行加密,使用类似Enterprise Library 的配置管理器来加密您的 web.config 部分。

    【讨论】:

    • 谢谢,之前没用过企业库,我去看看。
    • 连接是根据连接字符串加上用户身份池化的。使用集成安全可能会导致连接池碎片。 (msdn.microsoft.com/en-us/library/8xx3tyca.aspx)。
    • @Vasu - 我不知道这个问题,但我想这对于 Windows 应用程序来说是最重要的,因为 ASP.NET 应用程序通常与同一个用户(即工作进程标识)连接。跨度>
    【解决方案2】:

    关于保护连接字符串,我们应该了解以下几点: http://msdn.microsoft.com/en-us/library/89211k9b.aspx

    在我看来,存储它们的最佳方式(结合了灵活性和安全性的方式)是 “使用受保护的配置加密配置文件部分”: http://msdn.microsoft.com/en-us/library/ms254494.aspx

    【讨论】:

      【解决方案3】:

      那就是 web.config。如果担心安全性,您可以加密连接字符串。

      【讨论】:

        【解决方案4】:

        我最近发现一个有用的东西是微软的单点登录服务。如果需要使用 SQL 身份验证,可以将实际凭据存储在加密数据库中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-25
          • 1970-01-01
          • 2010-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多