【问题标题】:Securely Storing SMTP Credentials in Java EE在 Java EE 中安全地存储 SMTP 凭证
【发布时间】:2014-09-19 00:26:08
【问题描述】:

我有一个在 GlassFish 4 / Java 8 (x64) 上运行的 Java EE 应用程序。开发是在 Windows 机器上进行的,但最终会移植到 Linux(Red Hat 或 Ubuntu)。在该应用程序中,我需要从需要用户身份验证的 SMTP 服务器发送电子邮件消息,并且我正在使用 JavaMail 执行连接并发送电子邮件消息。这些电子邮件是在成功的用户注册、密码重置请求等期间代表系统发送的。因此,启动操作的用户将没有发送电子邮件的凭据。所有此类操作都使用相同的电子邮件凭据,并且相关电子邮件帐户专用于此用途。

立即想到的方法是将发送电子邮件帐户的用户名和明文密码存储在数据库或其他一些数据存储中,或者在 Java EE 应用程序中硬编码用户名和明文密码。这具有明显的安全风险,通常与明文存储密码相关。

对此有一些变化,我可以将密码的加密版本存储在数据库中或硬编码在应用程序中。那时,我又开始寻找一种存储密钥以解密密码的方法。

有哪些方法可以在 Java EE 中安全地管理此类凭据?我是否坚持以纯文本形式存储它?

【问题讨论】:

    标签: java security jakarta-ee smtp jakarta-mail


    【解决方案1】:

    首先,您的意思是“Java EE”there is nothing named "JEE"

    执行此操作的典型方法是将 JavaMail Session 配置为应用程序服务器(本例中为 GlassFish)中的受管对象,然后在您的应用程序中查找或注入该 Session。会话的配置将包括用户名和密码。这使您的应用程序无法使用密码,但任何可以读取服务器上 GlassFish 文件的人都可以访问它。为了进一步保护它,您可以将密码存储在密钥库中,使用密码别名从会话配置中引用它,并为 GlassFish 设置主密码以保护密钥库。我相信您会在 GlassFish 文档中找到更多详细信息;抱歉,我手头没有链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 2012-10-05
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多