Php 在清理数据时,类似SQL的查询是否需要特别注意?
在一个简单的场景中,使用类似SQL的用户输入来过滤数据,是否有任何特殊字符需要注意Php 在清理数据时,类似SQL的查询是否需要特别注意?,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,在一个简单的场景中,使用类似SQL的用户输入来过滤数据,是否有任何特殊字符需要注意 $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(['n
$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并因此被用于恶意目的的东西。您需要注意$input,它将包含逗号或引号您应该转义用于通配符匹配的字符
有关此操作的详细讨论,请参阅。为什么在本文中首先使用LIKE?因为我正在搜索仅给出“George”和类似案例的“George Thomson”等名称。啊,我现在明白了。是的,从输入中去掉
%
和\
是有意义的。在这种情况下,我不知道一个名字包含了%。我想是“50美分”,但我想他的名字是50美分。。。(你可以叫我25)