「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > mysql_real_escape_string() はaddslashes() に対してどのような追加のエスケープ機能を提供しますか?

mysql_real_escape_string() はaddslashes() に対してどのような追加のエスケープ機能を提供しますか?

2024 年 11 月 5 日に公開
ブラウズ:937

What Additional Escaping Capabilities Does mysql_real_escape_string() Provide Over addslashes()?

addslashes() の機能を超える mysql_real_escape_string() の機能は何ですか?

Web 開発では、mysql_real_escape_string() やaddedlashes() は、SQL インジェクション攻撃からアプリケーションを保護する上で重要な役割を果たします。ただし、最適なセキュリティを確保するには、これらの関数間のニュアンスを理解することが不可欠です。

DB 固有の関数の役割

パラメーター化されたクエリなどの代替オプションがある場合もありますが、 mysql_real_escape_string() のようなデータベース固有の関数には、特定の利点があります:

  • 特定のデータベース向けに調整: これらの関数は、MySQL などの特定のデータベース システムの固有の特性を処理するように調整されています。 .

mysql_real_escape_string()の機能

mysql_real_escape_string() は、次のような追加の文字にスラッシュを追加することで、addslashes() を強化します。

  • \x00
  • \n
  • \r
  • \
  • '
  • "
  • \x1a

対照的に、addslashes() は次の文字にスラッシュを追加するだけです:

  • '
  • \
  • NUL

addlashes() による SQL インジェクションに対する脆弱性

機能にもかかわらず、addlashes() のみに依存する Web アプリは SQL インジェクション攻撃に対して脆弱なままです。これは、addslashes() は悪用される可能性のあるすべての文字、特に二重引用符 (") をエスケープしないためです。

たとえば、次のクエリを考えてみましょう:

SELECT * FROM users WHERE username = '" . addslashes($_POST['username']) . "';

攻撃者は、" OR 1 = 1 のようなユーザー名を入力することで、addslashes() 保護をバイパスする可能性があります。これにより、次のクエリが生成されます。

SELECT * FROM users WHERE username = "" OR 1 = 1";

このクエリは、条件 " OR 1 = 1" が常に true と評価されるため、データベース内のすべてのユーザーを返し、攻撃者が機密データにアクセスできるようになります。

結論

addslashes() は SQL インジェクションに対する基本的な保護を提供しますが、mysql_real_escape_string() は MySQL に固有の広範囲の文字を最大限にエスケープすることにより、より堅牢な防御を提供します。セキュリティを確保するには、Web 開発者は mysql_real_escape_string() などのデータベース固有の関数の使用を優先するか、入力処理に関連する脆弱性を排除するためにパラメーター化されたクエリの採用を検討する必要があります。

リリースステートメント この記事は次の場所に転載されています: 1729486819 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

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

Copyright© 2022 湘ICP备2022001581号-3