php PDO中exec函数怎么防止sql注入,需要提前prepare吗?
我看到$pdo防sql注入是先prepare再excute,比如查询操作和插入操作,数据都是前台提交过来的
$sql="select pid,id,time,name,pl,znum,cnum from test where aid=? and status=1 order by id desc";
$pdo->prepare($sql);
$pdo->execute(array($_POST['aid']));
.....
这种没问题,但是这种
$sql="insert into test(aid,pid,time,name,pl,ip) values ({$res['aid']},{$res['pid']},".time().",'".$res['nc']."','".$res['nr']."','{$ip}')";
$pdo->exec($sql);
如果如上执行,怎么防止SQL注入,在没个POST参数上面加quote()吗?
exec可以先prepare吗?
SQL注入,首先理解其概念,就是利用各种分隔符,分割和伪造运行的sql,达到注入的目的。
另外prepare记得不错的话是预处理的过程,后面的参数只是占坑,在运行时进行填坑,填坑的过程中,就仅仅作为参数填进去,至于里面带有的注入sql,则仅仅只是作为一个参数了而已,可以理解为被转义掉。
如果sql没有坑,你prepare也没有意义。