【问题标题】:Connection String Best Practices [closed]连接字符串最佳实践 [关闭]
【发布时间】:2010-10-11 18:45:15
【问题描述】:

从安全角度来看,在 Web 应用程序中管理连接字符串的最佳方法是什么?我已经用几种不同的方式做到了。我已将它们存储为纯文本 web.config 设置键。我还创建了一个“常量”类,它为每个连接字符串提供了公共只读字符串属性。

有没有人有任何建议来管理连接字符串,这样我就不用担心它们会被恶意发现?我绝对愿意接受加密。

【问题讨论】:

    标签: asp.net sql connection-string


    【解决方案1】:

    您可以在您的 web.config 文件中encrypt your connection strings

    将连接字符串作为属性或常量存储在类中是不安全的。任何使用反汇编程序的人都可以看到您的连接字符串。

    最好的方法是配置加密。

    【讨论】:

    • 您可能还想使用 SecureString 而不是常规字符串,因此内存转储也不会暴露它……如果您愿意的话。
    【解决方案2】:

    您可以使用命令行工具 aspnet_regiis 加密和解密 web.config 的部分:

    加密: aspnet_regiis -pef "connectionStrings" "c:\folder\"

    解密: aspnet_regiis -pdf "connectionStrings" "c:\folder\"

    【讨论】:

      【解决方案3】:

      如果您可以完全控制服务器,您还可以将连接字符串存储在 Machine.Config 中。如果您有很多应用程序都使用同一个数据库服务器,这会很方便。

      我不确定它是否值得加密,因为您必须首先访问服务器才能查看 machine.config。如果您的服务器遭到入侵,Encyrption 不会阻止黑客从配置文件中提取凭据。

      【讨论】:

      • 它确实可以防止您意外暴露 web.config 的内容,只要攻击者无法将自己的 .aspx 文件上传到您的应用程序目录。
      • 类似的警告适用于散列用户密码 - 它仅保护您免受泄露的数据库备份。如果攻击者控制了网络服务器,两者都无用 - 但无论如何它们都值得这样做。
      • 我们在我为我们的不同服务器(开发、测试、产品)工作的地方执行此操作,因此每个服务器始终使用适当的连接字符串。效果很好。
      • 一旦连接字符串在您的 machine.config 中,您最好不要暴露它。如果你已经是你的吐司了。在 web.config 中加密是不同的。您倾向于将 web.config 文件存档,这样可以防止内部窥探者看到它们
      【解决方案4】:

      @vartec:这不是一个 SNAFU..

      如果您使用不会破坏任何 UTF8 或 Unicode 编码的标准 .NET 加密机制对其进行加密,IIS 确实可以读取加密文本。 Microsoft 也鼓励将此作为最佳实践。

      您可以从这里看到一个关于加密连接字符串的示例:

      “如何:使用数据源控件时保护连接字符串”

      http://msdn.microsoft.com/en-us/library/dx0f3cf2.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-18
        • 2017-09-07
        • 2014-04-01
        • 2017-12-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-17
        相关资源
        最近更新 更多