SQL インジェクション攻撃に対する保護をアップグレードして、より体系的にしたいと考えています。pdo、プリペアド ステートメント、mysql_escape_string の 3 つの主要な方法をまとめました。pdo が最適であると考えられますが、細心の注意を払っている場合は mysql_escape_string で十分であると考えられます。複数のテーブルを含む複雑なクエリがたくさんあるので、PDO または準備済みステートメントに行く準備ができていないと思うので、これは大きな作業になるでしょう。しかし、mysql_escape_string をよりプログラム的に利用したいと考えています。
ユーザーが送信する個々の変数をすべてエスケープするのではなく、句読点を処理するために何らかの変更が必要になる可能性がある標準関数を使用して SQL コマンドをエスケープすることを考えていました。および % などです。すべての sql ステートメントの標準関数は、変数ごとのアプローチよりも体系的で標準的であるように思われます。では、句読点を処理するためにどのような変更が必要になる可能性があるのでしょうか? また、mysql_escape_string が 100% 完了していないので、htmlspecialchars や strip_tags など、関数に入れるべきものは他にありますか?
基本機能はこちら。
function safe($sql) {
$safesql = mysql_real_escape_string($sql);
return $safesql;
}