我的代码需要连接到IMAP和SMTP服务器以定期发送和接收电子邮件,目前每3分钟左右发送一次。典型的用户流程如下
在后台,我运行一个石英调度程序,定期从IMAP服务器中提取电子邮件。 Web UI和quartz调度程序在单独的VM中运行,并在REST上相互通信。
在这种情况下保护用户电子邮件凭据的好方法是什么?一种方式散列无济于事,因为我永远不想再问用户他的密码,但我需要提供凭证以连接IMAP
答案 0 :(得分:1)
当然,确保密码安全的最佳方法是“不返回原始密码”,但这超出了这个问题的范围: - )
话虽如此,您最好的选择是使用仅存在于服务器上的私钥(但不与应用程序一起部署)在应用程序代码端加密密码。您可以查看Jasypt,它是Java加密的工具。此外,您可能需要考虑将密钥的密码分为两部分:一部分来自属性文件中的某个配置文件,另一部分来自(可能是)数据库本身。
答案 1 :(得分:0)
如果应用程序在客户端的计算机上运行,则使用用户选择的主密码加密密码。这允许用户锁定应用程序。
如果应用程序在服务器上运行,请确保通过HTTPS发送密码,或者最低限度地使用非对称公钥对密码进行加密,并在服务器上对其进行解密。
使用私钥存储使用AES或其他一些好的加密算法加密的密码,只是为了防止以纯文本格式存储它们。