最近项目遇到一个问题,是关于sql注意的问题,一个同事,写sql是拼写的,我们有低层的pdo没有用,结果造 成了注入,代码如下:
/*
*
$sql = "update <DB.TABLE> set is_activated=1,client_id='',encrypt_pwd='',user_nick='{$nickname}',update_time={$update_time} where sdid = {$uid} ";
$result = LibPDOEx::getPDO('user')->exec_with_prepare($sql, null);
*/
$set = array('is_activated' => 1,
'client_id' => '',
'encrypt_pwd' => '',
'user_nick' => $nickname,
'update_time' => $update_time
);
$where = " sdid={$uid} ";
$result = LibPDOEx::getPDO('user')->update($set,$where);
这里nickname变量,没有处理,如果输入了7865'; --这样 -- 在mysql中,会自动忽略后面的语法,结果就成了 无条件的更新,所有的user_nick都一样了.
下次要多注意安全问题了!
本文通过一个实际案例展示了SQL拼接导致的SQL注入问题。详细解释了如何通过恶意输入绕过正常验证过程,导致数据更新异常的情况。并强调了在编写SQL语句时使用参数化查询的重要性。
1843

被折叠的 条评论
为什么被折叠?



