作为咨询公司如何安全地询问客户的密码?

信息安全 密码管理
2021-08-22 18:53:27

在我作为开发人员的工作中,有时我需要客户提供的用户名/密码组合,以确保第 3 方服务的设置正确,以便与我们正在构建的网站/应用程序一起使用。例如,我们在游戏网站上使用的支付提供商。

询问他们的用户名和密码以保持安全的好方法是什么?如果我给他们发一封电子邮件,当然,他们只会给我发回一封带有密码的纯文本电子邮件,但这并不安全

更新:

我看到我的问题有点被误解了,所以我将添加一个示例:

假设我是软件公司 CoolSoft 的开发人员。另一家公司(我们称他们为 Games, Inc.)希望我们为他们创建一个网站。本网站将使用第三方服务进行支付和我们需要与之集成的客户支持。Games, Inc. 在支付提供商和客户支持提供商处创建帐户。但他们完全不是技术人员,我们需要他们的凭据来设置正确的回调 URL 等。他们如何安全地将密码发送给我们,以便我们修复他们的帐户设置(我们从未亲自见面)?

4个回答

你没有。

当您教用户将他们的用户名和密码提供给某人时,您就是在训练他们容易受到网络钓鱼或其他社会工程攻击。

相反,以管理员无需用户凭据即可查看和编辑这些设置的方式设计系统。

当您确实需要从用户的角度看待问题以解决问题时,请让用户为您输入密码,然后让他们向您展示问题。这可以亲自完成,也可以使用远程管理工具完成。

当您遇到客户在您的应用程序中拥有与第三方解决方案集成所需的凭据的情况时,请以非技术用户具有易于使用的用户界面来设置这些凭据的方式开发您的应用程序。无论如何,如果客户需要更改它们并且您不可用,您将需要它。

在应用程序部署在他们自己的服务器上之前,用户不必输入此内容。在开发过程中,您应该在您的终端上使用一个测试帐户与第 3 方进行交互。您绝对不希望给您的客户带来任何成本,因为您在 3rd 方支付接口上运行了一些测试,结果并没有达到您的预期。

有许多“团队密码管理器”允许团队共享、更改和撤销对凭据的访问。大多数都是付费的(或者对于小团队来说是免费的),但这可能是最好的方式。它们通常提供加密,以及对特定凭证访问的访问控制。

我看到的唯一可行的选择(尚未提及,奇怪)是让客户设置帐户具有适当的权限,以便您在这些系统/互联网服务上使用。这样,他们处理供应商关系和付款,但您的帐户具有您需要的访问权限。

正如菲利普的回答所说,您根本不要求或参与共享密码。一切都很糟糕,因为当其他人使用共享帐户时出现问题,您将自己置于应受责备的位置。(“我知道我的员工永远不会做那样的事情,而且你是我们唯一与之共享密码的人,所以一定是你们中的一个人做过的事情!!”)

我将情况总结如下

  • 您需要使用您的客户帐户访问第三方服务
  • 见面不容易
  • 涉及客户端安装软件或遵循复杂程序的解决方案是不可取的

我认为最好的解决方案是:向他们发送新密码

您以安全的方式向他们发送密码,并指示他们(通过电话?)将他们帐户上的密码临时设置为您建议的密码。- 然后您可以使用它来登录页面。完成后,他们可以将密码重置为原始值。

一种简单的方法是邮件中的一次性链接,这会导致显示密码的页面。客户端可以点击它,复制密码。并且攻击者将无法访问相同的密码链接。(当然,通过更改邮件内容进行有针对性的中间人攻击仍然是可能的,并且可以通过签署邮件来缓解)

您也可以通过电话告诉他们临时密码,他们将其记下并将其帐户密码临时更改为您告诉他们的密码。

这种向后的方式有几个好处:

  • 您的客户可以遵守“从不共享您的密码”规则
  • 您可以选择一种安全的方式来传递密码,而不必教您的客户一种安全的方式。
  • 您的客户可以控制授予和撤销您的访问权限