作为 Web 开发人员,我们需要向客户提供敏感数据。客户通常不太擅长使用计算机。他们可以发送电子邮件、接听电话或打开网页。但无法在他们的电子邮件客户端中设置 PGP。
向他们发送登录凭据的好方法是什么?有什么服务可以帮助我们解决这个问题吗?它需要相当简单且相当安全(通常比发送电子邮件更安全)。
大多数现成解决方案(Basecamp、Slack)的问题是它们会向您发送包含消息内容的电子邮件通知。
作为 Web 开发人员,我们需要向客户提供敏感数据。客户通常不太擅长使用计算机。他们可以发送电子邮件、接听电话或打开网页。但无法在他们的电子邮件客户端中设置 PGP。
向他们发送登录凭据的好方法是什么?有什么服务可以帮助我们解决这个问题吗?它需要相当简单且相当安全(通常比发送电子邮件更安全)。
大多数现成解决方案(Basecamp、Slack)的问题是它们会向您发送包含消息内容的电子邮件通知。
如果正确完成,密码将存储为单向哈希,因此您无法将其发送给它们。如果可以的话,把不能这样做作为你的首要任务。通过 SSL 的密码重置工作流程就是这样做的方法。
对于其他敏感数据,我会保持简单,只要求他们登录到您的系统。如果不知道他们的密码是什么阻止了这种情况,请通过安全的密码重置工作流程重置他们的密码。
将用户名和指向“设置/重置密码”页面的链接发送给他们。设置/重置密码页面会询问用户名和其他一些识别信息(例如电话号码、邮政编码、客户号码等)。如果通过身份验证,客户端然后可以为自己设置一个新密码。
作为附加的身份验证层,必须输入确认代码(通过 SMS)/在电子邮件中链接到客户端以确认设置密码。这可以防止一些知道识别信息的外人重置密码。
根据您的目的,我会推荐两种不同的方法:
如果可能,请避免这样做。如果您别无选择,那么您至少应该尝试在 2 个方面保护这些信息:1. 保护它免受恶意方拦截和读取信息,以及 2. 保护它免受内部威胁,例如恶意员工可能在发送凭据之前知道凭据。
为了在不打扰用户的情况下通过复杂的加密设置实现目标 1,我建议使用 2 个并行通道来发送凭据。您可以在一封电子邮件中发送用户名和密码的前半部分,并在 SMS 中发送密码的另一半(是的,Twillio 足够便宜)。这将大大降低坏人读取所有敏感信息的风险。
对于目标 #2,我可以想到一些最佳实践:使用强随机值生成器生成密码,强制用户在第一次登录后立即更改密码。我们不要忘记,所有密码都应该使用强密码散列算法存储为单向散列。
以下是一种简单的方法:您可以将文档添加到 zip(或 7zip,不太流行)文件中并使用密码保护它(有效地对其进行加密)。然后,您将此文件作为电子邮件附件发送给用户。对于密码,您通过短信发送。密码是用户访问文档所需的唯一内容。应该有 API 允许您自动(以编程方式)创建这些存档文件。至少我知道 7zip 有 API,它也支持 zip 格式。
如果您采用这种方法,我会推荐 zip 格式,因为它更流行,并且大多数操作系统都对它提供原生支持。只需确保选择 AES 而不是 Zip 2.0 作为加密算法,因为 AES 更安全。
您可以通过短信发送登录验证,然后强制用户在首次登录时更改密码。