「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > mysql_real_escape_stringがSQLインジェクションを防ぐことができるかどうかを明らかにします

mysql_real_escape_stringがSQLインジェクションを防ぐことができるかどうかを明らかにします

2025-04-12に投稿されました
ブラウズ:171

Is mysql_real_escape_string Truly Secure Against SQL Injection Attacks?

mysql_real_escape_stringの制限

PHPにおけるmysql_real_escape_string機能は、潜在的な攻撃に対する潜在的な攻撃に対する潜在的な攻撃に対する潜在的な攻撃に対する概要を促していないことで批判されています。関数の誤った使用が責任を負うと主張する人もいれば、その固有の制限について懸念を提起している人もいます。以下に示すように、SQLステートメントで単一の引用符で使用することを目的としたテキスト値をエスケープするように設計されています。 $ sql = "...` foo` = '$ value' ... ";

を適用する他のコンテキストでmysql_real_escape_stringを適用します。 mysql_real_escape_string

数値値を逃れるために使用されるとmysql_real_escape_stringをバイパスできる攻撃の例が生じます。次のクエリを検討してください:

mysql_query( 'user_id =' .mysql_real_escape_string($ input));
$value = mysql_real_escape_string($value, $link);
$sql = "... `foo` = '$value' ...";
の場合、user_id = '.mysql_real_escape_stringからdelete "5または1 = 1"、クエリは:

このクエリは、「または1 = 1」条件が常に真であるため、すべてのユーザーを削除します。この攻撃は、コンテキストに応じて正しいデータ型と脱出方法を使用することの重要性を示しています。データベース接続エンコードが正しく設定されていない場合、MySQL_Real_Escape_Stringが文字列を逃れる方法とデータベースがどのように解釈されるかとの間の矛盾につながる可能性があります。この矛盾は、特にマルチバイト文字列を扱う場合、特定の状況下で脆弱性を生み出す可能性があります。準備されたステートメント、パラメーター化されたクエリ、または注入脆弱性に対するより堅牢な保護を提供するより最新のデータベースAPIなどの代替アプローチを使用することをお勧めします。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3