Codeigniter密码匹配不适用于md5

时间:2014-12-08 21:06:55

标签: php codeigniter

当我在验证表单中使用以下代码时,即使两个密码相同,密码匹配也不会与两个密码匹配。

$this->form_validation->set_rules('password','Password','required|md5|trim|xss_clean|matches[rpassword]');
$this->form_validation->set_rules('rpassword','Repeat Password','required|md5|trim|xss_clean');

但是当我删除md5功能时,密码匹配工作正常。

有人能理解为什么会这样吗?

2 个答案:

答案 0 :(得分:3)

当您进行匹配[rpassword]时,它会查看md5之后的当前密码值,但是在md5之前查看rpassword。

将其切换为此,以便在转换为md5之前进行匹配验证:

$this->form_validation->set_rules('password','Password','required|matches[rpassword]|md5|trim|xss_clean');
$this->form_validation->set_rules('rpassword','Repeat Password','required|md5|trim|xss_clean');

此外,如果这是一个真正重要的应用程序 - 请知道md5很容易破解,如果有人能够进入你的数据库,他们能够破解所有这些密码。所以基本上使用md5几乎相当于首先不加密。

对于密码存储,请使用CRYPT_BLOWFISH或PHP 5.5的password_hash()功能。对于PHP< 5.5使用password_hash() compatibility pack

答案 1 :(得分:0)

这种情况正在发生,因为该操作会比较匹配[rpassword]"它是变量" rpassword"之前的变量。被发现,见下文:

您的代码:

array

更新并正常工作:

array = sign(0.5, array) + 0.5