無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 4 データベース管理 :: 4.6 セキュリティ問題 :: 4.6.4 LOAD DATA LOCAL のセキュリティ関連事項
« 4.6.3 セキュリティ関連の mysqld オプション

4.6.5 ユーザによる MySQL の実行 »
Section Navigation      [Toggle]
  • 4.6 セキュリティ問題
  • 4.6.1 セキュリティ ガイドライン
  • 4.6.2 MySQL のクラッカー対策
  • 4.6.3 セキュリティ関連の mysqld オプション
  • 4.6.4 LOAD DATA LOCAL のセキュリティ関連事項
  • 4.6.5 ユーザによる MySQL の実行

4.6.4. LOAD DATA LOCAL のセキュリティ関連事項

LOAD DATA ステートメントはサーバ ホストに置かれているファイルをロードできます。または LOCAL キーワードが指定された場合に、クライアント ホストに位置するファイルをロードできます。

LOAD DATA ステートメントのLOCAL バージョンのサポートに関しては、潜在的な問題が 2 つあります。

  • ファイルの読み取りがサーバ側から開始される。そのため、理論的には、改悪した MySQL サーバを作成しておけば、クライアントがテーブルに対してクエリを実行した時に、クライアント コンピュータ上に存在する全てのファイル (カレントユーザが読み取り権を持つ) を、LOAD DATA ステートメントの改悪した MySQL サーバが読み取れるということになります。

  • クライアントが Web サーバから接続する Web 環境では、ユーザは LOAD DATA LOCAL を使用して、Web サーバ プロセスが読み取りアクセス権を持つどのファイルでも読み取ることができます。これは、ユーザが SQL サーバに対してすべてのコマンドを実行できる場合です。この環境では、MySQL サーバに対するクライアントは実際には Web サーバであり、Web サーバに接続するユーザによるリモート プログラムのことではありません。

この問題を解決するには、MySQL 3.23.49 と MySQL 4.0.2 (Windows では 4.0.13 ) 以降の LOAD DATA LOCAL の扱い方を変更しました。

  • デフォルトで、MySQL クライアントとバイナリ配布のすべてを、--enable-local-infile オプションでコンパイルしました。これは MySQL 3.23.48 以前の MySQL との互換性のためです。

  • MySQL をソースから組み、--enable-local-infile オプションで configure を呼び出していない場合、mysql_options(... MYSQL_OPT_LOCAL_INFILE, 0) を明示的に呼び出すと指さなければ、クライアントは LOAD DATA LOCAL を使用できません。 項23.2.3.49. 「mysql_options()」 を参照のこと。

  • --local-infile=0 オプションで mysqld を起動すると、サーバ側からすべての LOAD DATA LOCAL コマンドを無効にできます。

  • mysql のコマンドライン クライアントでは、--local-infile[=1] オプションを指定すると、LOAD DATA LOCAL を有効化し、--local-infile=0 オプションで無効化します。同様に、mysqlimport では、--local または -L のオプションで、ローカルのデータ ファイル ロードを有効にします。どのような場合でも、ローカルでのロード操作は、サーバがそれを許可するかどうかによります。

  • オプション ファイルから [client] グループを読むような、Perl スクリプトまたはその他のプログラムで、LOAD DATA LOCAL を使用する場合、local-infile=1 をそのグループに追加できます。しかし、local-infile を認識しないプログラムで問題が発生しないようにするために、例示のように、loose- プレフィックスを使います。

    [client]
    loose-local-infile=1
    
  • LOAD DATA LOCAL INFILE を有効にする場合、サーバまたはクライアントのどちらかで、そのようなステートメントを発行しようとするクライアントは、次のようなエラー メッセージを受け取ります。

    ERROR 1148: The used command is not allowed with this MySQL version
    

MySQL Enterprise.? MySQL Network Monitoring and Advisory Service では、サーバを --local-infile オプションを有効にして起動する場合のセキュリティに関するアドバイスを提供しています。詳細は http://www-jp.mysql.com/products/enterprise/advisors.html を参照してください。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.