密码保存不同的数据(phpMyAdmin数据库)

时间:2016-08-29 06:34:59

标签: mysql database phpmyadmin passwords

password varchar(120)

以上是我设置的密码的column namedatatype。我正在使用phpMyAdmin数据库并创建用户进行测试,其中 userTest 为用户名, user123 为密码。当我检查数据库时,它不是将 user123 作为密码,而是包含 0dcbd056919392554f346a10cc114d27 之类的内容。与SQL Server数据库相比,SQL Server数据库将保存用户通过注册输入的密码的确切数据。

即便如此,我仍然可以使用 user123 作为用户名 userTest 的密码登录。如果我使用 0dcbd056919392554f346a10cc114d27 作为密码,我无法登录系统。我刚刚注意到它,并开始怀疑,作为管理员,如果我通过数据库,我将如何知道用户密码与他们用来注册的密码完全相同?

1 个答案:

答案 0 :(得分:1)

为什么在地球上你需要知道用户的密码?这是一个非常糟糕的主意。我明确地不想知道我的用户密码,或者有办法解密它们。造成这种情况的原因有很多,其中一个原因是,如果用户重新使用密码而您的数据库遭到入侵,那么用户的明文密码就会受到损害。

更常见的是散列密码;获取用户的密码,结合加密盐,并输入这些作为哈希函数的输入(我相信bcrypt最常见,但您的要求可能会有所不同)。该函数返回一些无意义的字符串,如$ 2a $ 06 $ XKJbhsfB4q53MovNJRgEuOkQKpnOIpjfQ7P8qMUWa63qGeHnPlyMu,然后存储在数据库中。当用户尝试登录时,您将重复哈希过程并将结果与​​存储在数据库中的值进行比较。

如果您确实需要存储明文密码,那么我强烈建议用简单的语言警告用户他们的数据库将以不安全的方式存储,并绝对使用专门为您设计的密码应用

同样,我强烈建议不要以明文形式存储密码,并确保使用加密安全哈希。

但无论如何,要直接回答您的问题,您不会在此处存储纯文本值。当您插入用户密码时,我无法知道您正在做什么,但显然您在varchar字段上执行某些功能。可能你已经从phpMyAdmin插入页面的下拉列表中选择了一个函数(见下面的截图);这会在您插入数据时将所选的MySQL函数应用于数据。 phpMyAdmin可能不是另一个很好的理由来破坏你的数据,所以这似乎很可能。

phpMyAdmin function dropdown