PHP-php操作mysql使用PDO , 是否有必要做防SQL注入过滤 ?
我们php操作mysql使用的是PDO , 请问还有没有必要做防止SQL注入的过滤啊 ???
PDO是不是参数化查询啊??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我们php操作mysql使用的是PDO , 请问还有没有必要做防止SQL注入的过滤啊 ???
PDO是不是参数化查询啊??
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
如果所有操作使用的都是PDO的预处理($pdo->prepare()),那么确实不需要防注入。
$pdo->exec()和$pdo->query()都需要防注入,用$pdo->quote($参数)来转义参数中的引号。
使用预处理:
$pdo=new PDO('mysql:dbname=test;host=localhost;port=3306','root','0123456789abcdef');
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); //设置记录的返回模式:关联数组
$pdo->exec('SET NAMES UTF8'); //防止乱码
$sql='SELECT uid,name FROM '.TABLE_PRE.'user WHERE regtime>? AND regtime<=? AND name like ?';
$sqldata=array(time()-3600*24*7, time(), '%老虎%');
$stm=$pdo->prepare($sql);
$stm->execute($sqldata);
var_dump($stm->fetchAll());
没有必要额外考虑过滤,但是要防止pdo的一些机制造成注入,例如:
以上来自MYSQL注入:MYSQL PDO宽字符SQL注入深入分析