【问题标题】:Where do you store your connection strings?您将连接字符串存储在哪里?
【发布时间】:2010-07-30 18:20:31
【问题描述】:

在我所有的 VB6 应用程序中,连接信息都存储在数据库的加密字段中。没有人可以访问数据库,如果有人这样做,他们看到的只是一堆加密值。

这种方法总是有缺陷的。使用应用程序中的硬编码 ID/密码获取所需的连接信息,该应用程序将获取此连接信息并形成一个字符串。

在 .NET 世界中,我目前将此硬编码的 ID/密码存储在 app.exe.config 文件中。 推荐的方法是加密文件中的连接字符串?

我可以使用哪些类来进行加密/解密?

【问题讨论】:

    标签: .net frameworks connection-string


    【解决方案1】:

    阅读:

    Encrypting Configuration Information in ASP.NET 2.0 Applications

    基本上,ASP.NET 基础架构具有您需要加密的工具,而 .NET 配置子系统知道如何在需要时解密 - 所以实际上已经有了所有内容,可供您使用!

    要加密,您可以使用aspnet_regiis 实用程序,如下所示:

    aspnet_regiis.exe -pef "connectionStrings" "C:\Inetpub\wwwroot\MySite" 
    

    对于解密 - 无需执行任何操作,.NET 会为您透明地处理。

    更新:适用于所有 .NET 的那些机制 - 它们是 .NET 基础架构的一部分。您可以将这些技术和方法用于您的控制台应用程序或 Windows 服务。 Microsoft 仅为 ASP.NET 案例提供工具来加密 web.config 的部分 - 但 API 和调用可供每个人在任何类型的 .NET 应用程序中使用 - 自己完成,从控制台应用程序到任何东西Windows 服务。

    我有一个small utility on my SkyDrive,它带有完整的 .NET 源代码,它向您展示了如何加密任何 .NET 配置文件的任何部分。随意检查一下,并以您认为合适的任何方式在您的工作中使用它。

    【讨论】:

    • 为什么每个人都投票赞成? OP 甚至不在 ASP.NET 上工作!
    • 我猜如果有人回答并且他的代表超过 50k,他一定是一个永远正确的天才......?这不是对 marc_s 的攻击;我看到这种情况一直在这里发生,这对社区的价值是有害的。它需要停止。
    • 当然,更大的问题可能是这些可能是分布式应用程序。我相当肯定这使用了机器加密密钥。但是,如果您使用应用程序的已知密钥加密您的配置以便分发它,那么您的安全性就会降低,因为人们只能使用您的密钥来解密。
    • @Josh Stodola:考虑到我提出的解决方案确实适用于所有 .NET 应用程序,我认为您的反对意见不合适.....
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2022-11-06
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多