SQL-Injection + PDO_MySQL =危险
•传统上MySQL只允许单个SQL查询
ext / mysql - 完全停止多个查询 ext / mysli - 具有单独的函数mysql_multi_query()
•注意:PDO_MySQL没有此限制 •使用PDO_MySQL在ZF应用程序中进行SQL注入比使用传统MySQL接口的应用程序更危险。
多久这是真的? 我读了here
我读过zf是一个非常安全的框架,但我没有找到任何内置的安全数据库。
答案 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)。