PDO准备声明的安全性如何?

时间:2012-08-16 12:25:47

标签: pdo sql-injection

我想知道PDO准备好的语句是否可以让我免于SQL注入?

实施例: $ DBH =新PDO(“mysql:host = $ host; dbname = $ dbname”,$ user,$ pass);

我要插入的数据

$ data = array('name'=> $ userInput_1,'addr'=> $ userInput_2,'city'=> $ userinput_3);

例如$ userInput_2是SLQ INJECTION。

$ STH = $ DBH->(“INSERT INTO folks(name,addr,city)value(:name,:addr,:city)”);

在这种情况下执行后会发生什么?

$ STH->执行($数据);

谢谢!

1 个答案:

答案 0 :(得分:0)

所有输入都将被正确转义&引。因此,使用PDO prepare / execute应该可以防止SQL注入。

从php手册:

  

为语句调用PDO :: prepare()和PDOStatement :: execute()   将使用不同的参数值多次发出   通过允许驱动程序优化应用程序的性能   协商客户端和/或服务器端缓存查询计划和   元信息,并有助于防止SQL注入攻击   无需手动引用参数。