目次
SQL インジェクションのバイパス mysql_real_escape_string()
攻撃Vector
攻撃プロセス
脆弱なシナリオ
軽減戦略
結論
ホームページ バックエンド開発 PHPチュートリアル mysql_real_escape_string() はバイパスできますか?

mysql_real_escape_string() はバイパスできますか?

Jan 04, 2025 pm 01:16 PM

Can mysql_real_escape_string() Be Bypassed?

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

SQL インジェクションを防ぐには mysql_real_escape_string() を使用するだけで十分であると広く信じられていますが、この防御をバイパスできるシナリオが存在します。 .

攻撃Vector

そのような攻撃の 1 つは、特定の条件の組み合わせを伴います:

  • 脆弱な文字エンコーディング (gbk、cp932 など) の使用
  • 接続文字セットの誤った設定クライアント上
  • 無効なマルチバイト文字が単一文字として扱われるエッジケースを悪用するエスケープするためのバイト数

攻撃プロセス

  1. データベース接続を確立し、サーバーの文字エンコーディングを脆弱なものに設定します (例: 'SET NAMES gbk')。
  2. 無効なマルチバイト文字シーケンスを含むペイロードを構築すると、シングルバイトとして誤って解釈されます。 ('xbfx27 OR 1=1 /*')。
  3. mysql_real_escape_string() を使用してペイロードを「エスケープ」します。これにより、アポストロフィの前にバックスラッシュが誤って挿入されます。
  4. 次を使用して SQL クエリを実行します。エスケープされたペイロードは、意図されたものを効果的にバイパスします

脆弱なシナリオ

この攻撃は、特に次のシナリオで懸念されます:

  • 4.1.20、5.0.22 より前の MySQL バージョンを使用している、または 5.1.11
  • 準備されたステートメントのエミュレーション5.3.6 より前のバージョンの PDO では

軽減戦略

この脆弱性を軽減するには、次のことが重要です:

  • MySQL バージョン 5.1 以降を使用する
  • を使用して接続文字セットを適切に設定します。 mysql_set_charset() または同等のもの
  • 5.3.6 より前の PDO バージョンでエミュレートされたプリペアド ステートメントを無効にする
  • utf8mb4 や utf8 などの脆弱性のない文字エンコーディングの使用を検討する

結論

しながらmysql_real_escape_string() は SQL インジェクションに対する重要な保護を提供しますが、絶対確実というわけではありません。データベース アプリケーションのセキュリティを確保するには、潜在的なバイパス メカニズムを理解し、対処することが重要です。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles