Show User Their Password

时间:2013-04-24 作者:dcolumbus

我有一些自动运行的脚本,用于通知用户应用程序的某些更新,等等。。。特别是,我需要能够显示用户user_login 以及他们的密码。

如果密码已加密,如何向用户显示密码?

2 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

理论上,这可以通过在用户更新密码时将其保存在其他地方来实现。

Note that this sort of thing is hardly ever recommendable.
在几乎所有情况下,都有一种更好的体系结构方法,使得不必显示纯文本密码。

也就是说,如果你一定要这么做,那么可以这样做:

funtion wpse_97127_save_passes( $errors, $update, $user )
{
    if (
        empty( $errors->errors ) &&
        ! empty ( $_POST[\'pass1\'] )
    ) {
        /* if you must save it in reversible form, at least don\'t save it in plain-text */
        $pass = base64_encode(
            mcrypt_encrypt(
                MCRYPT_RIJNDAEL_256,
                md5(AUTH_KEY),
                $_POST[\'pass1\'],
                MCRYPT_MODE_CBC,
                md5(md5(AUTH_KEY))
            )
        );
        // do something with $pass, i.e. save it somewhere
    }
}
add_action( \'user_profile_update_errors\', \'wpse_97127_save_passes\', 0, 3 );
上述情况可以颠倒如下:

$pass_from_db = $wpdb->get_results( /* retrieve encrypted, but reversible pass from db*/ );
$pass = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_256,
        md5(AUTH_KEY),
        base64_decode($pass_from_db),
        MCRYPT_MODE_CBC,
        md5(md5(AUTH_KEY))
    ),
    "\\0"
);
请不要在生产环境中使用单个实体的用户帐户在未经其同意或知情的情况下执行此操作。这不仅构成不良行为,而且是不道德的行为。

我只在一个特定的用户角色中执行上述操作,该角色的功能有限,其新用户总是由管理员或其他更高级别的角色设置,其密码首先与多个人共享
但我还是感觉不太好。

SO网友:s_ha_dum

用户密码存储在数据库中,称为hash. hash即使您知道散列及其创建机制,es也是不可逆的。“解密”散列的唯一方法是获取密码,对其进行散列,将其与目标散列进行比较,然后重试。。。一遍又一遍,直到你找到一根火柴。如果你仔细想想,你根本就不是在解密。这只是暴力追踪和错误。

纯文本密码永远不会保存,您不应该试图保存它,因为这样会破坏网站的安全性,而且由于人们倾向于重复使用密码,许多其他网站的安全性也会受到影响。

结束

相关推荐

如何使用GET_USERS获取用户描述?

我正在使用这段代码列出用户及其信息。我的问题是描述没有显示出来。显然,这是因为描述位于“user\\u meta”下,而不是“users”。但我该怎么解决呢?<?php $blogusers = get_users(\'include=2,3,4,5,6,7,8\'); foreach ($blogusers as $user) { echo \'<li>\' . get_avatar($user->I