在简单情况下,用户输入用于使用SQL LIKE过滤数据,是否有任何特殊字符我应该注意?在处理数据时,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并因此被用于恶意目的的事情。
为什么在这方面首先使用LIKE? – 2012-07-26 08:09:46
因为我正在寻找名为“George Thomson”的名字,只给出“George”和类似案例。 – Gajus 2012-07-26 08:11:10
啊,我现在明白了。是的,在这种情况下,在输入中去掉'%'和'_'是有意义的 – 2012-07-26 08:13:36