SQL-Injection + PDO_MySQL =危险

时间:2014-01-16 09:14:27

标签: mysql sql sql-server zend-framework

SQL-Injection + PDO_MySQL =危险

•传统上MySQL只允许单个SQL查询

  

ext / mysql - 完全停止多个查询   ext / mysli - 具有单独的函数mysql_multi_query()

•注意:PDO_MySQL没有此限制 •使用PDO_MySQL在ZF应用程序中进行SQL注入比使用传统MySQL接口的应用程序更危险。

多久这是真的? 我读了here

我读过zf是一个非常安全的框架,但我没有找到任何内置的安全数据库。

1 个答案:

答案 0 :(得分:3)

这不相关。注射可能更糟,但您必须不允许注射。

永远不要在字符串中连接未经验证的输入来构建SQL。

始终使用预准备语句:它们可以防止将查询分解为多个查询。

当你这样做时

$sql = 'SELECT name, colour, calories FROM fruit
    WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));

价值提供者无法打破该查询并执行除select之外的其他操作(示例为here)。