在配置文件编辑页面上获取当前用户密码

时间:2020-12-10 作者:D.JCode

我想在管理员配置文件页面上显示用户密码。我的意思是管理员可以看到其他用户密码。我正在使用此代码。但它显示了所有用户的密码!

add_action(\'show_user_profile\', \'extra_user_profile_fields\');
add_action(\'edit_user_profile\', \'extra_user_profile_fields\');

    function extra_user_profile_fields($user)
    {
    $user_info = get_userdata($user->ID);
     $wp_pass = $user_info->user_pass;
    
        if (current_user_can(\'administrator\')) {
            ?>
                <tr>
                    <th><label for="email"><?php _e("Password"); ?></label></th>
                    <td>
                        <input type="text" name="pass" id="pass"
                               value="<?php $wp_pass; ?>"
                               class="regular-text"/><br/>
                    </td>
                </tr>
            </table>
            <?php
        }
    }
当我vardump(get_userdata($user->ID)) 它正确显示有关用户的所有信息。但它为所有用户显示相同的用户密码;

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

这是不可能做到的,也不可能做到,如果做到了,那将是一件可怕的事情。不要尝试或追求这一点。

为什么不可能

密码在存储到数据库之前通过单向哈希函数运行。这允许我们检查密码是否匹配,但我们无法撤消哈希。要做到这一点,我们需要强行输入密码,根据密码的长度,密码可能需要几十年甚至几百年的时间。

这样一来,如果密码散列被泄露,就不可能再将其插入其他站点。密码在散列之前用密钥加密,这样这些散列对您的站点是唯一的。

合法性

然后你可能会认为我们可以将密码存储在明文中,或者使用神奇的清除功能。在许多国家,这是非法的,是起诉的理由。

例如,在欧盟和英国,这将违反许多数据保护和隐私法规,以及旨在防止疏忽的其他法律。

您还将无法通过各种形式的PCI合规性和任何安全审核。这意味着你网站上的任何形式的销售都将违反多大洲的消费者法律法规。

除此之外,任何发现的用户都可能因疏忽错误处理个人数据而提起诉讼。

安全性允许任何管理员窃取用户凭据。再加上用户倾向于重复使用密码,任何访问该网站的人都可能泄露这些用户的电子邮件和其他帐户,从而导致:

监管行动不良声誉数据丢失诉讼--

TLDR:

密码以散列形式存储,即使可以,也无法取消散列密码,这在经济上、法律上都是一件危险的事情,并且会严重危及您的网站安全。如果您有忘记密码的用户,请使用带有链接的重置密码电子邮件

SO网友:MMK

我认为默认情况下您无法获取用户密码,因为它是以哈希格式存储的。但是,您可以通过以下功能根据存储的密码检查用户输入。

wp_check_password($password, $user->user_pass, $userdata->ID);

相关推荐

Client Profiles

正在寻找创建客户机数据库的最佳方法。插件能最好地实现以下功能吗?我的客户端数据库插件存储有关客户端的个人信息和统计信息,这些信息和统计信息将通过自定义字段和自定义表单收集,管理员创建客户端配置文件后,仪表板选项卡将打开列表区域(类似于用户选项卡)(仅限管理员)“添加新”功能(类似于仪表板的用户区域)。管理员可以将客户端分配给用户,分配给用户的客户端显示为用户元数据。分配给用户的客户端将在用户配置文件中可见,仪表板小部件显示为登录用户分配的客户端,并带有指向客户端配置文件页面的链接。插件是解决此问题的解决方