2012-02-22 40 views
0

我目前有这种类型的PDO语句将INSERT变量插入到下面的数组中。我被告知使用PDO语句将是在PHP中进行插入的最安全的方式。带POST的PDO插入

$qry = $db->prepare('INSERT INTO twocents (path, name, message) VALUES (?, ?, ?)'); 
$qry->execute(array($path, $name, $message)); 

现在,将设置$path$name,并$message从提交的表单在POST值还是为安全?我不确定如果这些变量不是由任何设置的话,你会怎么做INSERT。

谢谢!

回答

1

是的,这在SQL注入预防方面是完全安全的。

但是,您可能仍然需要转义输出数据,例如,如果您收到的$message<script language="Javascript" src="http://evil.site.com/evil.script.js"></script>,那么您可能不希望将其输出为<p><?=$message?></p>。某些模板引擎(例如XSLT)通过单独处理HTML(XML)代码和数据来消除此问题,因此<p><xsl:value-of select="message"/></p>,message被视为<p/>节点文本值,并在将处理的XML写入字符串时自动转义。

0

在某些情况下,它可能会很好。但是,在将$ _POST数据插入准备语句之前,您可能需要对$ _POST数据执行某种类型的sanitization。否则,你可能会在数据库中得到一些粗糙的数据。无论如何,准备好的声明都有帮助。

0

是的。它是安全的(仅从sql注入)。