Skip To Content

標準化されたクエリについて

ArcGIS Server には、マップ、フィーチャ、イメージ、および WFS サービスを REST または SOAP を使用して操作するときに、標準化された SQL クエリの使用を開発者に強制するセキュリティ オプションが含まれています。これを使用すると、開発者とアプリケーションにとって ArcGIS Server サービスのクエリが容易になるとともに、SQL インジェクション攻撃を防ぐことができます。標準化されたクエリはデフォルトで適用されますが、サーバー管理者は無効化することができます。

標準化されたクエリの影響

標準化されたクエリが有効な場合、ArcGIS によって標準の構文がチェックされ、データベース固有の関数や構文は使用できなくなります。データベース固有の関数や構文を現在使用しているアプリケーション開発者は、アプリケーションのコード内にある WHERE 句を更新して、ArcGIS がサポートする一般的な SQL 構文を使用する必要があります。あるいは、標準化されたクエリのチェックを無効化するように ArcGIS Server を設定できます。

標準化されたクエリの制限

標準化されたクエリは ArcGIS Server サイト全体に適用されます。サービスによって有効と無効を使い分けることはできません。

標準化されたクエリは、異なるワークスペース間の結合ではサポートされていません。また、OLE DB 接続ファイルを通じてアクセスされるデータベース テーブルはサポートされていません。これらのソースがサービスのデータに含まれる場合、データを参照するのに別の方法を使用する必要があります。

たとえば、POP_2010 = (SELECT min(POP_2010) FROM counties のような WHERE 句のサブクエリはサポートされていません。

標準化されたクエリの記述方法

次のトピックでは、ArcGIS Server がサポートする SQL 関数について説明しています。

ArcGIS Server でサポートされている SQL 関数

このドキュメントは、アプリケーション内でマップ、フィーチャ、イメージ、および WFS サービスに対して使用できる標準化されたクエリを生成するために使用可能な SQL 関数を理解するのに役立ちます。

ArcGIS Server が標準化されたクエリを使用しているかどうかを確認する方法

前述したように、標準化されたクエリはデフォルトで有効になっていて、ArcGIS Server サイトのすべてのマップ、フィーチャ、イメージ、および WFS サービスに適用されます。ただし、サーバー管理者は、ArcGIS Server Administrator Directory にログインし、[system] > [properties] > [update] の順に選択することで、標準化されたクエリが使用されているかどうかを確認できます。[System Properties] ダイアログ ボックスにシステム プロパティが表示されないか、[{"standardizedQueries": "true"}] が表示されている場合、標準化されたクエリは有効になっています。

別の方法として、管理者、アプリケーション開発者、およびクライアントは、ArcGIS Server Services Directory を通じてサービスにアクセスし、[Use Standardized Queries] プロパティを調べることで、標準化されたクエリが使用されていることを確認できます。マップ、フィーチャ、および WFS サービスの場合、サービスの特定のレイヤーまたはテーブル (http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/service type/0 など) にアクセスすることで、プロパティを調べることができます。イメージ サービスの場合、プロパティはサービスのエンドポイント (http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/ImageServer など) にあります。

ArcGIS Server Administrator Directory へアクセスする手順や、標準化されたクエリを無効化する方法については、このトピックの次のセクションをご参照ください。

標準化されたクエリの無効化

アプリケーションでデータベース固有の WHERE 句ステートメントを使用する必要がある場合、ArcGIS Server Administrator Directory にアクセスして、標準化されたクエリを無効化することができます。手順は次のとおりです。

注意:

このセキュリティ オプションを無効にすることで、サイトは SQL インジェクション攻撃に対して脆弱になります。

  1. ArcGIS Server Administrator Directory を開き、サイトの管理者権限を持つユーザーでログインします。通常、ArcGIS Server Administrator Directory は、http://gisserver.domain.com:6080/arcgis/admin で使用できます。
  2. [system] > [properties] > [update] の順にクリックします。
  3. [Operation - update] ページで、[System Properties] ダイアログ ボックスに以下の文字列を入力します。

    {"standardizedQueries": "false"}

  4. [Update] をクリックします。
  5. ArcGIS Server を再起動します。

これで、標準化されていないクエリを使用して、マップ、フィーチャ、イメージ、および WFS サービスへのリクエストを送信できるようにサイトが構成されました。標準化されたクエリを再び有効にするには、上記の手順を繰り返し、[standardizedQueries] プロパティを [True] に設定します。