ホームページ > バックエンド開発 > PHPチュートリアル > mysql_real_escape_string() と addslashes() は SQL インジェクションの防止において同等ですか?

mysql_real_escape_string() と addslashes() は SQL インジェクションの防止において同等ですか?

Susan Sarandon
リリース: 2024-10-21 13:30:03
オリジナル
273 人が閲覧しました

Are mysql_real_escape_string() and addslashes() Equivalent in Preventing SQL Injection?

違いを理解する: mysql_real_escape_string() とaddslashes()

mysql_real_escape_string() とaddslashes() は両方とも特殊文字列をエスケープするために使用されます。 SQL インジェクション攻撃を防ぐために文字列内の文字を追加する必要がありますが、2 つの関数には重要な違いがあります。

mysql_real_escape_string()

この関数は MySQL データベース用に特別に設計されており、文字列にスラッシュを追加します。次の文字:

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

addslashes()

一方、addslashes() は 3 つの文字にスラッシュを追加するだけです:

  • '
  • NUL

セキュリティへの影響

addslashes() のみに依存する Web アプリケーション入力検証は依然として SQL インジェクション攻撃に対して脆弱である可能性があります。これは、addslashes() がインジェクション攻撃で使用される可能性のあるすべての文字、つまり、

  • Linebreaks (n およびr): これらの文字はクエリに新しい行を導入するために使用でき、検証チェックを回避できる可能性があります。
  • コメント (--): これらの文字はコメントアウトするために使用できます。クエリの残りの部分は、攻撃者が任意の SQL コマンドを実行できるようにします。
  • 追加のエスケープ文字 (x1a): mysql_real_escape_string() は、addslashes() がサポートしない追加のエスケープ文字から保護します。 as x1a.

推奨事項

セキュリティを最適化するには、mysql_real_escape_string() とaddslashes() の両方の使用を避け、代わりにパラメータ化されたクエリまたは準備されたクエリを使用することをお勧めします。発言。これらのメソッドを使用すると、手動エスケープを必要とせずにユーザー入力をクエリにバインドできるため、より安全で効率的です。

以上がmysql_real_escape_string() と addslashes() は SQL インジェクションの防止において同等ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート