在配置问题中保护密码

时间:2009-09-13 08:03:31

标签: .net cryptography app-config

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

2 个答案:

答案 0 :(得分:3)

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

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

大多数资源都告诉您使用ASP.NET aspnet_regiis工具。 Here是一篇关于加密C#Windows应用程序部分的文章,其中使用ASP.NET不是一种选择。

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

  

这种安全就足够了 - 它是一个   简单的内部公司应用程序和那里   不需要非常高的安全性   不想让密码打下来   在配置文件

中作为纯文本

那么也许this solution对你有用。

答案 1 :(得分:2)

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

当然,问题在于您必须存储加密和解密应用程序内密码的对称密钥,因此任何了解crypto和.net的人都能够反映和反向设计二进制文件相当容易 - 并获取密钥,因此获取FTP密码。

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

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

我想这取决于您在应用程序中想要这个用户名和密码的安全性如何?这种解决方案可以防止那些有窥探眼睛的人抓住它,但不会阻止那些被确定的人。