扫码关注官方订阅号
使用tb框架开发还用防止sql注入吗?怎么防止SQL注入?求大神解答
学习是最好的投资!
一个简单的:用PDO操作数据库,要执行的sql语句中用:占位符或者?占位符代替直接拼接字符串,然后用bindParam来绑定参数并且规定参数的类型。一个简单的例子
$pdo = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);//先新建一个PDO $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//开启PDO的报错 $sql = 'SELECT * FROM article WHERE id > ? ;';//使用?占位符 try{ $stmt = $pdo->prepare(sql);//返回的statment的值赋给$stmt $stmt -> bindParam(要绑定的占位符的位置, 要绑定的变量 [, 数据类型]);//bindParam()是$stmt的方法而不是$pdo的方法 $stmt -> execute();//执行sql语句 } catch (PDOException $e) { echo 'Execute SQL failed: ' . $e->getMessage(); exit(); }
使用mysqli或pdo的参数化查询
不管你是框架还是什么PDO和注入没有半毛钱的关系,有很多人都错误的理解PDO可以防止注入,想的试通过占符和预处理来防止,这些其实都不能起到100%的效果,自己写全局过滤,过滤掉sql关键字才是比较安全的做法
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
一个简单的:
用PDO操作数据库,要执行的sql语句中用:占位符或者?占位符代替直接拼接字符串,然后用bindParam来绑定参数并且规定参数的类型。
一个简单的例子
使用mysqli或pdo的参数化查询
不管你是框架还是什么PDO和注入没有半毛钱的关系,有很多人都错误的理解PDO可以防止注入,想的试通过占符和预处理来防止,这些其实都不能起到100%的效果,自己写全局过滤,过滤掉sql关键字才是比较安全的做法