【问题标题】:Securing passwords in config problem在配置问题中保护密码
【发布时间】:2009-09-14 23:01:24
【问题描述】:

我的 .NET WinForms 应用程序连接到 ftp 服务器并下载文件。为此,需要连接密码。密码应存储在配置文件中,但应加密。我发现的唯一解决方案包括保护整个配置部分(这对我来说没有用,因为在 appSettings 部分中密码是需要手动更改的其他数据)或使用 DPAPI(以及也不起作用,因为在我的计算机上加密的密码无法在其他计算机上解密,这是必要的)。还有其他技术吗?

【问题讨论】:

  • 您可以创建自己的部分,但您必须定义一个处理程序来解析它们。例如,请参阅codeproject.com/KB/aspnet/ConfigSections.aspx
  • 好的,但是只有在我的机器上才能再次解密在我的机器操作系统上加密的部分!这就是问题

标签: .net cryptography app-config


【解决方案1】:

您可以加密 .config 文件的特定部分 - 例如,<connectionstrings> 部分。这可以保存 FTP 密码(尽管它不是真正的连接字符串),并且您可以不加密 <appSettings> 部分。

更新:如果您也不能使用<connectionstrings>,您可以创建自己的自定义部分并对其进行加密。

大部分资源都告诉您使用 ASP.NET aspnet_regiis 工具。 Here 的文章讨论了 C# Windows 应用程序的加密部分,其中不能使用 ASP.NET。

进一步更新:您在评论中说

这种安全性就足够了——它是一个 简单的公司内部应用程序,还有 不需要非常高的安全性,只需 不想让密码躺着 在配置文件中有纯文本

那么也许this solution 对你有用。

【讨论】:

  • 仍然 - 这是整个部分。如果我需要存储其他可以手动更改的连接字符串怎么办?
  • 是的。或者有一个单独的密码配置文件 - 然后你可以对文件做任何你想做的事情 - 加密它,将它隐藏在其他地方,甚至在可能/可行的情况下更改文件的安全权限。取决于您的应用程序是否需要分发。最终,这些都以某种方式易受攻击,所以我建议查看不同的协议(可能是 SFTP),在服务器上按 IP 过滤连接,或者查看如何从服务器中检索数据的不同方法服务器。
  • 我可以创建自己的配置部分吗?我一直认为在 cofig 文件中只能允许一些指定的部分
【解决方案2】:

您可以在应用程序中使用对称密码(即 AES)手动加密和解密,并将加密密码存储在配置文件中。

这个问题当然是你必须在你的应用程序中存储加密和解密密码的对称密钥,所以任何了解加密和 .net 的人都可以反映和反向工程你的二进制文件相当容易 - 并获得密钥和 FTP 密码。

您可以混淆您的二进制文件以使其更加困难。

当然,无论如何,FTP 用户名和密码都是以明文形式发送的(除非您使用的是 ftps:),因此任何“监听”您的应用程序的人都会很快找出用户名和密码。

我想这取决于您希望应用程序中的用户名和密码有多安全?这种解决方案可以防止那些窥探的人抓住它,但不能阻止那些有决心的人。

【讨论】:

  • 这个安全性就足够了——它是一个简单的公司内部应用程序,不需要非常高的安全性,只是不想让密码在配置文件中以纯文本形式存在跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多