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

ワイルドカードの照合に使用される文字はエスケープする必要があります。

これを行うための良い議論については、MySQLワイルドカードのエスケープを参照してください。

于 2012-07-26T08:38:57.067 に答える
1

$inputに注意する必要があります。コンマ記号または引用符が含まれます。

于 2012-07-26T08:16:23.437 に答える