gpt4 book ai didi

php - 从数据库检索盐时,如何在 codeigniter 中使用带密码的盐

转载 作者:行者123 更新时间:2023-11-29 23:38:32 25 4
gpt4 key购买 nike

这是我的模型,我正在查询数据库,从其中检索我需要的内容,然后进行比较。除了查询不将盐视为列名,而是将盐视为字符串,这很好,只是它将单词“盐”视为字符串,而不是数据库中的数据。我该如何解决这个问题?

function login($username, $password) {          
$this->db->query("SELECT firstname, username, password, salt FROM table_name WHERE username='$username' AND password = 'sha1(salt.$password'");
$this->db->limit(1);`

$query = $this->db->get();

if($query->num_rows() == 1) {
return $query->result(); //Data is true
} else {
return false; //Data is false
}
}

最佳答案

这里有一些事情在起作用。首先,您将 ' 添加到哈希中。 SQL 中的第二次连接不使用 . 运算符。请尝试以下操作:

SELECT firstname, username, password, salt 
FROM table_name
WHERE username='$username'
AND password = sha1(CONCAT(salt,'$password'))

请确保 $username$password 均已正确清理,否则很容易遭受 SQL 注入(inject)。更好的是使用准备好的语句。不确定在 CodeIgniter 中如何完成此操作,但可以在此处查看信息:How can I prevent SQL injection in PHP?
编辑:查询绑定(bind)将在 CodeIgniter https://ellislab.com/codeIgniter/user-guide/database/queries.html 中完成这项工作

关于php - 从数据库检索盐时,如何在 codeigniter 中使用带密码的盐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26294762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com