Skip To Content

A propos des requêtes standardisées

ArcGIS Server propose une option de sécurité qui force les développeurs à utiliser des requêtes SQL standardisées lorsqu'ils utilisent des services de carte, d'entités, d'imagerie et WFS via REST ou SOAP. Cela facilite l'interrogation des services ArcGIS Server par les développeurs et les applications et permet d'empêcher les attaques par injection de code SQL. Les requêtes standardisées sont appliquées par défaut, mais elles peuvent être désactivées par l'administrateur du serveur.

Comment les requêtes standardisées m'affectent-elles ?

Lorsque les requêtes standardisées sont activées, ArcGIS recherche la syntaxe standard et n'autorise pas la syntaxe et les fonctions spécifiques à la base de données. Si vous développez des applications et que vous utilisez une syntaxe et des fonctions spécifiques à la base de données, vous devez mettre à jour les clauses WHERE du code de votre application pour qu'elles utilisent la syntaxe SQL normale prise en charge par ArcGIS. Sinon, vous pouvez désactiver sur ArcGIS Server la fonction de recherche de requêtes standardisées.

Limites des requêtes standardisées

Les requêtes standardisées sont appliquées au site entier d'ArcGIS Server. Elles ne peuvent être activées pour certains services et désactivées pour d'autres.

Les requêtes standardisées ne sont pas prises en charge sur les jointures entre différents espaces de travail. En outre, les tables de bases de données dont l'accès est possible via un fichier de connexion OLE DB ne sont pas prises en charge. Si vos données de service contiennent ces sources, vous devez utiliser d'autres méthodes pour référencer vos données.

Les sous-requêtes sous forme de clause WHERE, par exemple POP_2010 = (SELECT min(POP_2010) FROM counties ne sont pas prises en charge.

Comment puis-je rédiger une requête standardisée ?

La rubrique suivante décrit les fonctions SQL prises en charge dans ArcGIS Server :

Fonctions SQL prises en charge dans ArcGIS Server

Vous pouvez utiliser ce document pour savoir quelles fonctions SQL utiliser pour générer des requêtes standardisées pouvant être utilisées sur des services de carte, d'entités, d'imagerie et WFS dans vos applications.

Comment puis-je savoir si des requêtes standardisées sont utilisées par ArcGIS Server ?

Comme nous l'avons indiqué ci-dessus, les requêtes standardisées sont activées par défaut et s'appliquent à tous les services de carte, d'entités, d'imagerie et WFS du site ArcGIS Server. Toutefois, un administrateur de serveur peut vérifier que des requêtes standardisées sont utilisées en se connectant au répertoire d'administrateur d'ArcGIS Server et en accédant à Système > Propriétés > Mise à jour. Si aucune propriété système n'apparaît dans la boîte de dialogue Propriétés système ou que la mention {"standardizedQueries": "true"} apparaît, cela signifie que les requêtes standardisées sont activées.

Pour savoir si des requêtes standardisées sont utilisées, les administrateurs, développeurs d'applications et clients peuvent également accéder à un service via le répertoire des services ArcGIS Server et examiner la propriété Utiliser des requêtes standardisées. Pour les services de carte, d'entités et WFS, la propriété est accessible par l'intermédiaire d'une couche ou table spécifique du service, par exemple http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/service type/0. Pour les services d'imagerie, la propriété est disponible à l'extrémité du service, par exemple http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/ImageServer.

Pour savoir comment accéder au répertoire d'administrateur ou désactiver les requêtes standardisées, reportez-vous à la section suivante de cette rubrique.

Désactivation des requêtes standardisées

Si vous devez utiliser des instructions de clauses WHERE spécifiques à la base de données dans votre application, vous pouvez désactiver les requêtes standardisées en accédant au répertoire d'administrateur d'ArcGIS Server. Pour ce faire, suivez les instructions ci-après.

Attention :

En désactivant cette option de sécurité, votre site est plus exposé aux attaques par injection de code SQL.

  1. Ouvrez le répertoire d'administrateur et ouvrez une session en tant qu'administrateur sur votre site. Il est généralement disponible à l'adresse suivante : http://gisserver.domain.com:6080/arcgis/admin.
  2. Cliquez sur système > propriétés > mettre à jour.
  3. Sur la page Opération - mise à jour, entrez la chaîne suivante dans la boîte de dialogue Propriétés système :

    {"standardizedQueries": "false"}

  4. Cliquez sur Mettre à jour.
  5. Redémarrer ArcGIS for Server.

Votre site est désormais configuré pour permettre aux utilisateurs d'envoyer des requêtes aux services de carte, d'entités, d'imagerie et WFS via des requêtes non standardisées. Pour réactiver les requêtes standardisées, renouvelez les instructions ci-dessus, mais attribuez la valeur true à la propriété standardizedQueries.