最近项目遇到一个问题,是关于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都一样了.
下次要多注意安全问题了!