この質問は、インジェクションを防止するための実績のある関数の実際の代替案を作成することに関するものではなく、自作のインジェクション防止コードの欠陥に気付いていない人々と議論する方法に関するものです!
私は同僚に指摘しようとしていますが、SQL インジェクションに対する彼の「解決策」は私にはかなり安全に思えます。
彼は次のようにしてクエリをクリアします
$query = $_POST['username'];
$look = array('&', '#', '<', '>', '"', '\'', '(', ')', '%');
$safe = array('&', '#', '<', '>', '"', ''', '(', ')', '%');
str_replace($look, $safe, $query);
そして、ログインに進みます
"SELECT * FROM users WHERE username = '" . $query . "'
AND password = '" . md5($_POST['password']) . "'";
私は彼に PDO または同等のものを使用させようとしていますが、実際にこの保護を破るにはどうすればよいでしょうか? 私には答えがありません。これがどのように危険であり、なぜこのようにしてはいけないのかを彼に説明できないので、本当に悩まされています.