Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  LOAD DATA LOCAL のセキュリティーの問題

6.1.6 LOAD DATA LOCAL のセキュリティーの問題

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

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

  • クライアントホストからサーバーホストへのファイルの送信は、MySQL サーバーによって開始されます。理論的には、パッチ適用済みサーバーを構築して、LOAD DATA ステートメントでクライアントによって指定されたファイルでなく、サーバーが選択するファイルを転送するようサーバーがクライアントプログラムに指示するようにすることができます。そのようなサーバーは、クライアントユーザーが読み取りアクセス権を持つクライアントホスト上のすべてのファイルにアクセスできます。

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

これらの問題に対処するために、MySQL 3.23.49 と MySQL 4.0.2 (Windows では 4.0.13) 以降で LOAD DATA LOCAL の処理方法が変更されました。

  • デフォルトでは、バイナリ配布内のすべての MySQL クライアントおよびライブラリは -DENABLED_LOCAL_INFILE=1 オプションでコンパイルされ、MySQL 3.23.48 以前との互換性が保持されています。

  • MySQL をソースからビルドしたが、-DENABLED_LOCAL_INFILE=1 オプションを指定して CMake を呼び出さない場合、LOAD DATA LOCALmysql_options(... MYSQL_OPT_LOCAL_INFILE, 0) を呼び出すように明示的に記述される場合を除いて、いずれのクライアントからも使用できません。セクション23.8.7.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 が無効な場合、そのようなステートメントを発行しようとしたクライアントは次のエラーメッセージを受け取ります。

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

User Comments
Sign Up Login You must be logged in to post a comment.