0

在简单的场景中,用户输入用于使用 SQL LIKE 过滤数据,是否有我应该注意的特殊字符?

$input  = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);

// Should I strip characters like '%'?

$sth    = $db->prepare("SELECT `id` FROM `names` WHERE `name` LIKE :name");
$sth->execute(['name' => $input . '%']);

我指的是任何可能显着减慢查询/占用 CPU 并因此被用于恶意目的的东西。

4

2 回答 2

1

您需要关心$input,它将包含逗号或引号

于 2012-07-26T08:16:23.437 回答
1

您应该转义用于通配符匹配的字符。

请参阅转义 MySQL 通配符以获得关于这样做的很好的讨论。

于 2012-07-26T08:38:57.067 回答