几个月来我一直在想这个问题,但我仍然不知道答案,除了可能的速度表现。长话短说,与其到处都有所有这些 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
。