【发布时间】:2014-10-13 12:00:49
【问题描述】:
您好,我想知道为什么以前从未有人问过这种示例问题。 我从我的大学得到了这段代码,他们说这种代码能够防止 sql 注入
我们使用codeigniter建站,这里是防止sql注入的代码
控制器
$usr = $this->input->post('userid');
$pwd = $this->input->post('passwd');
if($usr && $pwd) {
$ack = $this->mAuth->get_user($usr);
$pwx = $ack['passwd'];
if($ack && $pwd == $pwx) {
//redirect code
}
型号
public function get_user($user_id='', $status=1) {
$user_id = $this->db->escape(trim($user_id));
$status = $status ? 'and user_status_uid = 1' : '';
$sql = "select * from users where user_id = lower($user_id)"
return rst2Array($sql, 'row');
}
我尝试使用 1' 或 1 = 1 等登录,我发现它确实阻止了 sql 注入,即使它只是纯文本和密码。
此代码是否存在漏洞? 谢谢
【问题讨论】:
-
如果你想防止 sql 注入,永远不要通过字符串连接构建包含数据的 sql 查询。
-
这段代码 if($ack && $pwd == $pwx) { //redirect code } 它实际上可以防止注入以任何人的身份登录,对吗?有人真的可以举个例子吗?
标签: php sql codeigniter sql-injection