如何处理应用程序中的数据库或ftp服务器的密码

时间:2009-08-04 13:37:59

标签: security passwords

  

可能重复:
  Ways around putting a password in code

如果您创建的应用程序例如连接到数据库或ftp服务器,则需要用户名和密码。

您如何建议存储?

第一个也是最简单的选项当然是应用程序中的纯文本,但是如果你以某种方式反编译应用程序(或者在php等情况下应用程序已经是明文),我想它会非常清晰可见。 )。但有什么方法可以解决这个问题吗?当然可以加密它,但是你必须解密它(虽然我可能是错的)通常需要像密码或某种类型的令牌。然后你回到了开头,因为你在哪里存储那个密码/令牌?

这个领域有哪些好的做法?

1 个答案:

答案 0 :(得分:2)

非常类似于这个问题

Ways around putting a password in code

因为,你没有提到平台,我假设Windows。我在这里重现了我对这个问题的回答。

这里有多个选项。

1.您可以第一次散列密码并将散列存储到文件中。现在,下一次,您希望使用提升的权限执行代码,您需要接受/重新键入密码并重新计算哈希值并将其与存储的哈希值匹配。只有匹配时才会在高程模式下执行代码。您可以使用SHA进行哈希。有关散列的示例,请查看System.Crytography命名空间。

2.第二个选项是使用AES等算法加密密码。但是,您需要有一个密钥来执行此操作,您将不得不担心保护此密钥。

3.第三种选择是使用DPAPI并加密密码,但不担心保护密钥 - 比2更容易选择。

如果您不介意每次应用程序启动时重新输入密码,我建议使用1。如果这不可能,我建议使用3并使用DPAPI。

以下是一些帮助您入门的链接。

1。http://www.obviex.com/samples/dpapi.aspx 2. http://www.obviex.com/samples/Encryption.aspx