ホームページ > データベース > mysql チュートリアル > SQLインジェクションバイパス `mysql_real_escape_string()`?

SQLインジェクションバイパス `mysql_real_escape_string()`?

Susan Sarandon
リリース: 2025-01-25 21:27:10
オリジナル
640 人が閲覧しました

How Can SQL Injection Bypass `mysql_real_escape_string()`?

無効なマルチセクション文字を使用して、SQL注入のために

をバイパスしますmysql_real_escape_string()

関数が使用されていても、SQL注入が発生する可能性があります。次の手順では、この機能をバイパスする方法を示しています。

mysql_real_escape_string()

サーバー文字セットを簡単に攻撃しやすいコーディングとして設定します。
  1. 無効なマルチバイト文字を含む攻撃負荷:

    <code class="language-sql">mysql_query('SET NAMES gbk');</code>
    ログイン後にコピー
  2. 準備が整っていない攻撃負荷を使用してクエリを実行する:

    <code class="language-php">$var = mysql_real_escape_string("\xbf\x27 OR 1=1 /*");</code>
    ログイン後にコピー
  3. 関数の回転操作は、現在使用されている文字セットに依存します。ただし、この例では、接続は攻撃が簡単な文字セット(GBKなど)を使用して、無効なマルチライン文字の作成を可能にします。したがって、注射荷重は正しく伝達されていないため、注射攻撃が成功しました。

    安全対策

    <code class="language-sql">mysql_query("SELECT * FROM test WHERE name = '$var' LIMIT 1");</code>
    ログイン後にコピー
    そのような注射攻撃を防ぐために、必ず次の措置を講じてください。
安全な文字:

UTF8やLATIN1など、攻撃が容易ではない文字セットを選択します。 mysql_real_escape_string()

no_backslash_escapes sqlモードを有効にします:

これにより、回転の過程で無効な文字が防止されます。

PDOを使用してシミュレーション前処理ステートメントを無効にします:

PDOは、潜在的な注入の脆弱性を防ぐために、実際の前処理文を提供します。

MySQLの新しいバージョン(5.1以下のバージョン):これらのバージョンは、上記の注入攻撃を可能にする脆弱性を修正します。

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

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