【问题标题】:Decrypt (only) connection string section in Winforms app.config解密 Winforms app.config 中的(仅)连接字符串部分
【发布时间】:2009-07-29 21:06:16
【问题描述】:

好的,我知道这个问题已经被问过一千次了,但还没有得出结论性的解决方案……所以这是另一个非常愚蠢的问题!

我有一个 Winforms 3.5 应用程序并使用 LINQ to SQL,因此默认情况下连接字符串 ALWAYS 存储在“app.config”中(并且 VS2008 不会接受任何其他存储方式 -我什至尝试在 IDE 生成的代码中覆盖它)。话虽如此,任何有一点计算机知识的人只需浏览到应用程序的安装目录,查找 [appname].exe.config 文件,然后打开它即可显示用于访问数据库的假定 secure 用户名/密码。即使您选择加密/解密此部分,它也仅在应用程序运行时完成 - 所以我假设当应用程序关闭时,connString 部分恢复为纯文本......可以再次读取。 (....你是怎么赢的?!?!)

请记住,我使用 LINQ 并生成 LinqDataContext,我想知道的是:

  1. connstring 不能存储在 app.config 之外的其他地方吗? (可能就像在安装后可以修改的用户设置文件中一样)
  2. 如果上述情况可行,我是否可以不将 预加密 连接字符串存储到配置文件中(肯定无法读取)并且在我的应用程序中,选择仅解密连接字符串何时打开连接?

如果这一切都不可能,我可能不得不恢复使用传统的 ADO.NET(看到我已经有数百个用于所有 CRUD 操作的存储过程)——至少这样我可以控制如何以及在哪里connstring 被存储。

顺便说一句 - 抱歉,如果这是一个幼稚/令人困惑的问题,如果您觉得我解释的任何内容有误,请告诉我。

非常感谢!

【问题讨论】:

  • 更新: 我发现以下链接 (goneale.com/2009/03/26/…) 不言自明,并解决了我的第一个问题 - 哇!请问有人现在可以帮助我解决我的第二个问题吗?

标签: winforms config encryption


【解决方案1】:

您可以在 app.config 中存储一个预加密的 conn-string,但我想这将是无用的,因为您的应用程序迟早会解密 conn-string(任何有兴趣的人都可以使用纯文本!)

所以您也应该获得 SSL 证书...(不是自签名证书)

【讨论】:

  • true,但它是否会对 Winforms App.config 文件中的预加密字符串执行相同的操作? Iv 可以完美地进行解密,并在内存中持久化。
猜你喜欢
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 2011-02-18
  • 2011-05-19
  • 2016-02-10
  • 2012-07-23
  • 1970-01-01
  • 2022-02-19
相关资源
最近更新 更多