おそらく数か月前から疑問に思っていましたが、速度パフォーマンス以外の答えはまだわかりません。簡単に言えば、このすべての PDO コードをあらゆる場所に配置する代わりに、すべての文字の間にバックスラッシュを入れないのはなぜでしょうか?
$String = $_POST["attack"]; // SOME THING' OR 1 = 1 --
$String = fFilter( $String ); // \S\O\M\E\ \T\H\I\N\G\'\ \O\R\ \1\ \=\ \1\ \-\-
しばらく SQL のことには触れていなかったので、完璧な例を示すことはできませんが、基本的に SQL 文字列は次のようになるはずで、SELECT * FROM account WHERE id = '\S\O\M\E\ \T\H\I\N\G\'\ \O\R\ \1\ \=\ \1\ \-\-'
そのようなものは常にかなり安全に見えましたが、誰も聞いたことがありません。それを使用する、または使用しない理由さえ。html などをフィルタリングするのはよくありませんが、すべての文字をフィルタリングしない理由がわかりません。どんな攻撃も のように見えるので\a\t\t\a\c\k
。