创建我公司使用的平台的开发人员不再适合我们,我不知道如何从自定义PHP应用程序中检索密码
当我查看PHPmyAdmin时,密码被密封(例如* 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19)
如何更改或检索这些?
答案 0 :(得分:15)
如果使用了正确的加密方法,则无法轻松检索它们。
只需使用新密码重置它们。
修改:字符串看起来像是在使用PASSWORD()
:
UPDATE user SET password = PASSWORD("newpassword");
答案 1 :(得分:13)
如何解密MySQL密码
你真的不能因为它们是经过哈希处理而没有加密。
这是当前MySQL使用的PASSWORD
函数的本质。您可以从sql终端执行它:
mysql> SELECT SHA1(UNHEX(SHA1("password")));
+------------------------------------------+
| SHA1(UNHEX(SHA1("password"))) |
+------------------------------------------+
| 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+------------------------------------------+
1 row in set (0.00 sec)
如何更改或检索这些?
如果您在登录debian或ubuntu系统时遇到问题,请先尝试一下(感谢tohuwawohu https://askubuntu.com/questions/120718/cant-log-to-mysql):
$ sudo cat /etc/mysql/debian.conf | grep -i password
...
password: QWERTY12345...
然后,使用debian维护用户登录:
$ mysql -u debian-sys-maint -p
password:
最后,更改用户密码:
mysql> UPDATE mysql.user SET Password=PASSWORD('new password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit;
当我查看PHPmyAdmin时,密码是加密的
相关,如果您需要转储用户数据库以获取相关信息,请尝试:
mysql> SELECT User,Host,Password FROM mysql.user;
+------------------+-----------+----------------------+
| User | Host | Password |
+------------------+-----------+----------------------+
| root | localhost | *0123456789ABCDEF... |
| root | 127.0.0.1 | *0123456789ABCDEF... |
| root | ::1 | *0123456789ABCDEF... |
| debian-sys-maint | localhost | *ABCDEF0123456789... |
+------------------+-----------+----------------------+
是的,这些密码是 NOT 腌制的。因此,攻击者可以预先构建表并将其应用于所有MySQL安装。此外,攻击者可以了解哪些用户拥有相同的密码。
有人说,mySQL的人不遵循最佳做法。约翰史蒂文在OWASP的Password Storage Cheat Sheet上做了一篇关于密码存储最佳实践的优秀论文。为了公平对待MySQL人员,他们可能会因为架构,设计或实现方面的痛点(我根本不知道)而这样做。
如果您使用PASSWORD
和UPDATE
命令,但更改无效,请参阅http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html。即使该页面被命名为“重置权限”,它的确如何更改密码。 (它令人迷惑的MySQL密码更改程序如此破碎,你必须跳过箍,但它就是这样)。
答案 2 :(得分:6)
散列是一个单向过程,但是使用密码列表可以重新生成散列并与存储的散列进行比较以“破解”密码。
此网站https://crackstation.net/尝试为您执行此操作 - 运行密码列表并根据您的哈希值告诉您明文密码。
答案 3 :(得分:4)
幸运的是,如果原始开发者有任何好处,您将无法获得纯文本。我说“运气”,否则你可能有一个不安全的系统。
对于管理员密码,因为您拥有代码,您应该能够从已知的纯文本创建散列密码,以便您可以控制应用程序。遵循原始开发人员使用的算法。
如果他们没有腌制和散列,那么请确保将其作为“最佳实践”
应用答案 4 :(得分:3)
只需将其更改为password('yourpassword')
答案 5 :(得分:0)
您无法在mysql中解密密码,因为密码是使用md5 哈希算法进行哈希处理的,该算法不是编码算法。
答案 6 :(得分:0)
从linux服务器上最好的方式
sudo mysql --defaults-file=/etc/mysql/debian.cnf -e 'use mysql;UPDATE user SET password=PASSWORD("snippetbucket-technologies") WHERE user="root";FLUSH PRIVILEGES;'
这种方式适用于任何Linux服务器,我对Debian和Ubuntu 100%肯定你赢了。