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

标签 mysql database phpmyadmin passwords

密码 varchar(120)

上面是我设置的密码的列名称数据类型。我正在使用 phpMyAdmin 数据库并创建了一个用于测试目的的用户,其中 userTest 作为用户名,user123 作为密码。当我检查数据库时,它没有保存 user123 作为密码,而是保存了类似 0dcbd056919392554f346a10cc114d27 的内容。与SQL Server数据库相比,SQL Server数据库将保存用户通过注册输入的密码的准确数据。

即便如此,我仍然可以使用user123作为用户名userTest的密码登录。如果我使用0dcbd056919392554f346a10cc114d27作为密码,我无法登录系统。我刚刚注意到这一点,并开始想知道,作为管理员,如果我通过数据库,我如何才能知道用户密码,就像他们用来注册的密码一样?

最佳答案

你到底为什么需要知道用户的密码?这真是一个糟糕的主意。我明确不想知道我的用户的密码,也不想有办法解密它们。有很多原因可以解释为什么这是一个坏主意,其中之一是,如果用户重复使用密码并且您的数据库遭到泄露,那么用户的明文密码也已被泄露。

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

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

再次,我强烈建议不要以纯文本形式存储密码,并确保您拥有加密安全的哈希值。

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

phpMyAdmin function dropdown

关于mysql - 保存不同数据的密码(phpMyAdmin 数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39199892/

相关文章:

mysql - 在sql中查找三个表的平均值

mysql - 如何使用一个 SQL 查询计算嵌套表中的行数?

apache - 除了 $cfg ['Servers' ][$i] ['ssl' ]=TRUE 我还需要什么

php - 用户 'root' @localhost mysql 错误 1045 的访问被拒绝

mysql.connector.errors.InterfaceError : Failed parsing EOF packet

mysql - mysql表添加外键约束时出现错误1005

java - 如何在没有 EventListener 的情况下从 Firebase 检索数据?

database - 显示oracle数据库的所有 View

php - 数据库设计;或使用 json 数据进行条件选择

php - SQL 棘手的嵌套请求