【问题标题】:Storing a password for a webservice?存储网络服务的密码?
【发布时间】:2015-06-15 02:25:31
【问题描述】:

我正在使用需要用户名和密码才能登录的网络服务。 Web 服务将由桌面应用程序使用。我应该如何存储密码以及用户名?通常,您似乎会将密码与盐一起存储在数据库中,但在这种情况下,我用来访问 Web 服务的库接受纯文本的用户名和密码(并且 不是加密版本),但使用 SSL 连接到实际的 Web 服务。

这根本不是我的专业领域,在将密码传递给库中的方法之前我应该​​如何解密?

【问题讨论】:

  • 你不能。您需要将其存储在为您提供明文密码的表单中。
  • 这似乎非常不安全......
  • 也许我不理解这种情况,但如果您的 Web 服务需要纯文本形式的凭据。您可以将其加密存储在配置文件中,当您需要调用 Web 服务时,从配置中解密凭据并调用它。
  • 是的,我就是这个意思。你不能散列它,你必须加密它,这样桌面应用程序才能解密它。
  • 使用不同的网络服务,因为它“非常不安全”。

标签: c# .net security passwords


【解决方案1】:

您忽略了这是否仅适用于您,或者您是否正在将软件分发给其他人。

您担心的威胁是什么?

如果它只适合你:

将其写在一张纸上,并将该纸保存在您的wallet 中。需要时提示输入密码。

密码变量应该是 SecureString 而不是字符串,这样它就不会被拦截。

如果您不想将其存储在钱包中,请使用公钥加密密码,并将私钥保存在智能卡中,并使用智能卡解密密码。

如果您不想使用智能卡,请使用DPAPI

【讨论】:

    【解决方案2】:

    我发现在类似情况下对我很有效的一件事是使用 AES 加密用户名和密码,这样凭据可以在文件中修改,但肉眼无法读取。

    为了使其更复杂,您可以使用不同的键和向量通过多次传递来运行它。

    我在这里用过这个人:SO: SimpleAES encryption

    当然,如果用户获得密钥和向量并通过自己的解密运行它,则可以逆转,但至少在这种情况下,您可以将加密的字节数组存储为 base64 或将其写入文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 2016-04-27
      • 1970-01-01
      相关资源
      最近更新 更多