php - WordPress sha 256登录

标签 php wordpress sha

我被要求启用 SHA256 来存储 wordpress 密码。 我一直在寻找没有运气的插件(不工作),所以我开始开发自己的插件。

我首先想到.. 好吧,如果我用我自己的函数替换 wp_hash_password,它会在保存密码和登录时加密。但我没那么幸运。我可以在基本的 php 文件中运行 hash(sha256)。我知道用户将无法登录,因为存储的 key 是​​ md5 而比较是 SHA,但这不是问题。

代码:

 if(!function_exists('wp_hash_password')):
   function wp_hash_password($password){
     return hash('sha256', $password);
   }
endif;

所以我想我必须制作自己的“检查登录”功能。 有人做过这样的事吗?¿

最佳答案

在我看来,如果您也覆盖 wp_check_password 函数,您的方法应该有效。我认为这必须在插件中完成,因为函数是在主题的 functions.php 之前加载的。像这样:

<?php
/*
Plugin Name: sh256pass
Version: 1.0
*/

if(!function_exists('wp_hash_password')):
   function wp_hash_password($password){
     return hash('sha256', $password);
   }
endif;


if(!function_exists('wp_check_password')):
    function wp_check_password($password, $hash, $user_id = '') {
        // You might want to apply the check_password filter here 
        return wp_hash_password($password) == $hash;
    }
endif;

请注意,您要么必须让您的用户在下次登录时重置密码(您将无法自动转换现有密码),要么必须遵循 WordPress 在 wp_check_password 中的方法。并将密码与旧的加密值(在他们的情况下为 md5)进行比较,如果匹配,则更新为新值。

请记住,wp_users.user_pass 字段只有 64 个字符长。虽然这(刚好)足以存储 sha256 值,但还不足以存储 sha256盐。如果您不加盐,并且两个用户选择了相同的密码,则 wp_users.user_pass 字段将包含相同的值,这使得任何有权访问数据库的人都清楚密码是相同的。我的直觉是,这比使用当前算法存在更大的安全风险。您可以通过(比如说)在散列之前连接用户 ID 和密码来解决这个问题,但在某些边缘情况下您可能不知道用户 ID(例如在创建用户时)。

就我个人而言,我会质疑这一要求。

关于php - WordPress sha 256登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23949502/

相关文章:

php - 我在 Ubuntu 14.04 中使用 codeigniter 得到 URL not found 问题错误

php - 有没有办法在 Symfony 4 中放置队列 worker ?

php - 检查字符串是否为哈希

encryption - 使用弱密码,bcrypt或SHA-256 + AES-256加密文件?

php - 调用css、js文件的最佳方式?

php - 如何在php中将文件转换为UTF-8?

php - Woocommerce:如何在购物车中只允许一种产品类型?

javascript - Squareup.com 的自定义 Woocommerce 支付网关

javascript - 使用从 URL 变量读取的 JavaScript 加载不同的 CSS 样式表

cryptography - SHA 256伪代码?