【问题标题】:Correct approach for the change admin password in javajava中更改管理员密码的正确方法
【发布时间】:2016-05-18 10:53:29
【问题描述】:

在登录过程中,我从数据库中获取密码以与用户输入的密码进行比较,如果比较成功,那么我将使用 Setter 方法将该密码存储到一个变量中,以便在更改密码方法中进一步使用。

在更改密码方法中,我需要将用户输入的旧密码值与存储在数据库中的当前密码进行比较。因此,我使用在成功登录期间设置的 getter 方法使用存储在该变量中的值。

我只需要知道这些方法是否正确还是需要再次调用数据库获取密码?

【问题讨论】:

  • 如果我理解正确,您将密码存储在纯文本中。请不要这样做。对存储和比较密码哈希的主题进行一些研究。
  • 本质上,任何与安全相关的正确方法是首先做大量的阅读和研究。你最好不要从编码你幼稚的想法开始。这并不是一种侮辱。相反:获得正确的安全性是困难。在您真正深入研究整个主题一段时间之前,您不应该编写一行代码。换句话说:一个真正要写这样代码的人……不应该问这样的问题。
  • 不,我正在存储密码的哈希值。
  • 写 reto 的话:crackstation.net/hashing-security.htm 用于一些背景,stackoverflow.com/a/2861125/995891 用于 Java 中的 PBKDF2 示例。我还将尝试确保您以原子方式更改数据库中的密码,这样您就不会意外接受已在其他地方(在另一个浏览器选项卡左右)替换的旧密码。 IE。不要信任您的缓存,当您需要验证密码是否正确时,请再次调用数据库。

标签: java login passwords


【解决方案1】:

如果您的应用程序能够使用同一用户登录不同的系统,那么这种方法非常危险,因为从一个系统登录后,我可以从另一个系统更改密码,这在第一次登录时没有反映出来,现在我可以更改两个系统的密码都是错误的(导致新密码未存储在另一个帐户的登录变量中)。所以我想建议同时从数据库中检查。

【讨论】:

  • 谢谢,用另外一个场景测试我的代码对我很有帮助。
【解决方案2】:

不要在本地存储密码,只需创建另一个页面/方法/动作来比较它。您可以对密码进行一些加密,例如基本更改 或其他一些可用的库,如果您将它们存储在本地,请使其更安全。 我建议不要存储它们。

【讨论】:

    猜你喜欢
    • 2019-11-26
    • 2021-10-18
    • 2015-06-27
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多