【发布时间】:2014-09-08 09:07:29
【问题描述】:
对不起,我是php编程新手,在我的旧项目中,我使用MD5来加密密码,但是它不够安全,我在互联网上找到了一些资源建议使用密码salt。
问题是,我正在使用 codeigniter,是否有任何帮助/库用于此目的/如何更改我的旧代码以支持密码盐的生成?
感谢您的帮助。我正在使用 PHP 5.2
这是验证的旧代码,而用户帐户通过存储md5($password);生成
function validate_credentials() {
$this->load->model('Secure_model');
$username = $this->input->post('username');
$password = md5($this->input->post('password'));
$is_valid = $this->Secure_model->validate('customer', $username, $password);
if ($is_valid) {
$data = array(
'user_id' => $this->get_user_id($username),
'user_name' => $username,
'is_logged_in_user' => true
);
$this->session->set_userdata($data);
redirect('profile');
} else {
$data['message_error'] = TRUE;
$data['main_content'] = 'front/login';
$this->load->view('front/includes/template', $data);
}
}
【问题讨论】:
-
我发现我也需要将盐存储在数据库中,这个教程sunnyis.me/blog/secure-passwords是否适合我的要求?非常感谢
-
不要将盐存储在数据库中!如果有人设法转储数据库,他们将使用盐。它与不使用任何盐基本相同。
-
感谢您的回复,从那个教程看来我什至不需要储存盐。只是像 md5 一样编码但是 phppass 中的每条记录的盐是不稳定的吗?
-
@DannyThunder - 使用每个密码唯一的盐,攻击者必须为每个密码构建一个彩虹表,这没有意义(暴力破解更快)。所以盐的目的是防止使用一个彩虹表来一次获取所有密码。你可能想到的是胡椒或钥匙。如果你有兴趣可以看看我关于safely storing passwords的教程。
-
@martinstoeckli 那部分我明白,它在我不明白的数据库中存储盐。当然如果它是一个不同的数据库。将检查您的页面!谢谢,
标签: php codeigniter security password-protection password-encryption