次の PHP プロジェクトでJustin Vincent のezSQLmysql_connect
を使用することを検討していますが、内部で使用されていることに気付きました。mysql_*
PHPで関数を使用することは推奨されていないことを知っています。私は、次のようなコードを介して SQL インジェクション攻撃を受けた Web サイトをかなりの割合で見てきました。
<?php mysql_qyery("SELECT * FROM my_table WHERE id = " . $_GET['id']); ?>
PDO が準備済みステートメントをサポートしていることは知っていますが、ステートメントを準備する必要はないため、同様に安全でないクエリを作成できます。
クエリを実行する前にデータのエスケープを処理するexSQLmysql_*
のようなライブラリを使用している場合に、知っておくべき関数に固有のセキュリティ上の欠陥があるかどうか疑問に思っていましたか?
編集: mysql 拡張機能の代わりに PDO/mysqli を使用する必要があるかどうか、または mysql 拡張機能が PHP の将来のバージョンで削除されるかどうかを尋ねているわけではありません。これらの両方の質問に対する答えは、PHP マニュアルや他の場所ですぐに入手できます。ただし、 mysql 拡張機能が推奨されない理由については、すぐに入手できるドキュメントが不足しています。これは、「10 年以上使用してきた MySQL 拡張機能 (ext/mysql) の使用が推奨されないのはなぜですか? それは非推奨ですか? 代わりに何を使用すればよいですか?どうすれば移行できますか?」実際、それが推奨されない理由には答えていません。
これは、古い mysql 拡張機能にまだ依存しているライブラリを使用している開発者にとって問題です。拡張機能がサポートされなくなったからといって、これが「無関係」な質問になるわけではありません。古い拡張機能を使用するライブラリがまだたくさんあるためです。