似乎我创建的每个应用程序都需要能够偶尔发送电子邮件。例如状态电子邮件。对于这个问题,假设我的应用程序是一个备份工具,本地安装在许多 windows 客户端上,并且每次安装都需要发送每日状态邮件。它可以安装在组织的服务器或私人计算机上。
我要求用户向他拥有的电子邮件帐户提供凭据(STMP 主机、端口、用户名、密码、发件人地址)。我从 Atlassian Jira/Confluence 或 JFrog Artifactory 等应用程序中复制了这种方法。他们在哪里以及如何存储 SMTP 密码?
我目前的理解是:Salting/Hashing 方法不适用于此处,因为我需要能够检索明文密码才能实际发送电子邮件。我不想以明文形式存储密码,所以它必须是某种加密/解密方法(对吗?)。
我可以告诉用户不要使用他的主电子邮件帐户,而是使用一些辅助帐户,或者更好的是,设置一个特殊的电子邮件帐户供我的应用程序使用。如果用户是组织的管理员,他可能能够在其 Exchange 服务器上设置电子邮件帐户或配置 SMTP 中继。但是,我了解我,我也了解我的私人用户,他们中的一些人无论如何都会使用他们的主电子邮件帐户,所以我想尽我所能确保他们的凭据尽可能安全(我的意思是“遵循最佳实践”)。
最好我想将加密的密码存储在应用程序的数据库中。
我花了几个小时阅读有关 stackoverflow 的问题,但我看不到共识(就像用户帐户登录凭据一样)。我觉得这很令人惊讶,因为我预计基本上每个开发人员迟早都会遇到这个问题。
必须遵循一些最佳实践,一些既定的方法来解决这个问题,但我还没有找到它。
请指出我在 SO/网络上解释如何解决这个问题的资源。如果可能的话,由该领域的一些专家撰写。
我看过的一些SO问题: