【问题标题】:How to store java web application needed passwords?如何存储 java web 应用程序所需的密码?
【发布时间】:2016-07-26 16:33:34
【问题描述】:

我已经阅读了有关这种情况的几个主题并找到了一些解决方案,但我不太确定它们是否适合我的项目。

比如这个话题:https://stackoverflow.com/questions/10306673/securing-a-password-in-a-properties-file

在我的 Web 应用程序中,用户可以在我的主页上注册并进行操作,他必须在该主页上登录。我正在使用 SCrypt 保存密码。用户可以通过以明文形式输入密码来登录,密码将根据数据库中的加密密码进行检查。如果密码正确,则用户可以访问控制中心。

注册和非注册用户可以通过联系表格向我的电子邮件帐户发送电子邮件。

这个联系表单调用一个 Bean,它发送一封电子邮件。要发送此电子邮件,我必须将帐户信息存储在某处。

问题是,我必须解密密码。如果我将信息加密保存,则帐户验证将失败。

以纯文本形式保存密码是绝对可怕的。

我想过在应用程序启动后将密码设置到应用程序范围 bean 中的属性中,但我不确定这是否是一种保存方式。

如果需要密码,另一个选项是应用程序从中读取的文件。但是在这个文件中,密码被解密了。

保存应用程序需要的密码的最佳方法是什么?

EDIT1 06.04.2016 12:48:

我需要为我的 EmailBean 解密密码,以便 bean 可以登录到我的电子邮件帐户并发送消息。

【问题讨论】:

  • 您出于什么原因/任务需要未加密的密码?保存或使用未加密的密码很可能是错误的概念。
  • 您是说需要用户在登录后发送密码?
  • 您可能想要调查“哈希”。粗略地说:您不是存储密码(既不是明文也不是加密的),而是它的哈希值。当用户输入密码时,将对其应用相同的哈希函数并与存储的哈希进行比较。当然,还有很多。你仍然必须安全地转移...... Salt&Pepper......等等等等。
  • @Fildor 他正在使用 SCrypt,它甚至可以加密保护哈希,所以我认为这更多是 OP 的概念问题。 :-)
  • @Vampire 哦,我明白了。谢谢。以为他只是加密了明文密码。

标签: java email encryption passwords


【解决方案1】:

好吧,如果您需要密码来针对您的邮件服务器进行身份验证,您需要在某处以明文形式使用它。如果您不取消拥有密码的要求,例如。 G。通过将您的邮件服务器配置为在没有密码的情况下接受来自您的 IP 的邮件,那么您能做的最好的事情就是通过一些加密来混淆密码。但它必须是可逆的,你的代码会反转它。因此,如果有人闯入系统并访问了您的代码,他也将能够解密和检索您的密码。但至少它不会在文件中以明文形式出现。

【讨论】:

  • 感谢您的回答。 config.properties 文件有什么问题?有人告诉我,服务器之外的人无法访问它。如果有人闯入系统,他很可能无论如何都能得到密码。配置文件是安全的解决方案吗?
  • 我会说这是令人满意的,只要您的系统得到适当的保护以使文件无法访问。如果有人设法闯入系统,则在文件中对其进行加密只是另一个障碍,他可能还不够坚定,无法对其进行解密。所以这只是另一种安全措施。接受与否取决于你自己。
猜你喜欢
  • 2011-09-21
  • 2012-01-01
  • 2011-02-04
  • 2010-09-07
  • 1970-01-01
  • 2011-08-27
  • 2015-02-17
  • 2015-09-08
  • 2012-03-06
相关资源
最近更新 更多