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