我目前有这种类型的PDO语句将INSERT变量插入到下面的数组中。我被告知使用PDO语句将是在PHP中进行插入的最安全方式。
$qry = $db->prepare('INSERT INTO twocents (path, name, message) VALUES (?, ?, ?)');
$qry->execute(array($path, $name, $message));
现在,将$path
,$name
和$message
设置为来自已发布表单的POST值是否仍然安全?我不确定如果那些变量没有被任何东西设置,你会怎么做INSERT。
谢谢!
答案 0 :(得分: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写入字符串时会自动转义。
答案 1 :(得分:0)
在某些情况下,它可能会很好。但是,您可能希望在将$ _POST数据插入预准备语句之前对其执行某种类型的sanitization。否则,您可能会在数据库中获得一些粗糙的数据。无论如何,准备好的陈述确实有帮助。
答案 2 :(得分:0)
是。它是安全的(仅限sql注入)。