如何在C#应用程序中安全地存储FTP凭据?

时间:2015-03-31 11:08:59

标签: c# wpf ftp credentials reflector

我正在开发一个C#WPF应用程序,用户在其中生成图像,然后应用程序使用FTP连接将其上传到虚拟主机。 FTP连接的凭据始终相同,并且当前仅存储在源代码中。 我知道使用.NET Reflector,黑客可以很容易地获得FTP连接的用户名和密码。 我如何以及在何处存储这些凭据以确保反编译安全? 或者有更好的方法而不是使用FTP上传文件吗?

1 个答案:

答案 0 :(得分:0)

您不能允许用户访问自己知道您不希望用户知道的凭据的程序。用户始终最终能够从程序中提取凭据。您可以放慢速度,但通常的复制保护计算适用:

  • 如果信息足够有价值,您认为需要保护它,那么对其他人来说,绕过您的保护是非常有价值的。
  • 如果您投入足够的精力进行保护,以确保其他人无法绕过您的保护,那么您的投资本身就超过了信息的价值(即您花了太多钱)。

根据您与用户及其使用的计算机的关系,您可以选择其他方式:

  • 提供凭据,在安装后输入程序配置。只有当你信任它们时才这样做。
  • 将FTP连接代码实现为Windows服务。将凭据提供给将安装该程序的其他人,该程序将依次安装使用凭据配置的服务。用户只能访问将与服务通信的客户端程序,该服务将代表用户处理FTP通信。同样,只有当您信任安装程序的人,并且不受信任的用户在计算机上没有管理员权限时才执行此操作。
  • 发出每用户凭据。坦率地说,这是恕我直言最好的方法。优点包括:
    • 用户不知道任何会影响其他人资源安全的内容,
    • 您不必尝试向用户隐藏任何内容,
    • 您可以基于每个用户监控对FTP资源的访问,
    • 您可以撤消特定用户的凭据,而不会影响其他用户。