为啥PDO可以有效防止注入?

阅读 4.2k
2 个回答

这背后是MySQL的预处理实现的,PDO发送给MySQL的并不是“拼接”后的SQL语句

举个例子

PREPARE mystatement FROM "SELECT * FROM topic WHERE id = ? or id = ?";
set @a = 1;
set @b = 2;
EXECUTE mystatement USING @a, @b;
DEALLOCATE PREPARE mystatement;

其实关键的一点就是语句和数据通过这个方式实现了分离,例子中的@a, @b的内容怎么变,SQL的语法解析都不会把它们解析成语句的一部分

文档在此 http://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html

推荐问题
宣传栏