ArcGIS Server incluye una nueva opción de seguridad que obliga a los desarrolladores a usar consultas SQL estandarizadas para trabajar con servicios de mapas, entidades, imágenes a través de REST o SOAP. Esto facilita las consultas a los servicios de ArcGIS Server por parte de los desarrolladores y las aplicaciones y también ayuda a evitar los ataques por inyección de SQL. Las consultas estandarizadas están activadas de forma predeterminada, pero el administrador del servidor puede deshabilitarlas.
¿Cómo me afectan las consultas estandarizadas?
Si las consultas estandarizadas están habilitadas, ArcGIS comprueba la sintaxis estándar y no permite sintaxis y funciones específicas de la base de datos. Si, como desarrollador de aplicaciones, utiliza actualmente la sintaxis y las funciones específicas de la base de datos, deberá actualizar las cláusulas WHERE en el código de la aplicación para usar la sintaxis de SQL común admitida por ArcGIS. Como alternativa, puede deshabilitar que ArcGIS Server compruebe que las consultas sean estandarizadas.
Límites de las consultas estandarizadas
Las consultas estandarizadas se aplican a todo el sitio de ArcGIS Server. No se pueden habilitar para algunos servicios e inhabilitar para los demás.
Las consultas estandarizadas no admiten uniones entre diferentes espacios de trabajo. Además, no se admiten las tablas de base de datos a las que se accede mediante un archivo de conexión OLE DB. Si sus datos de servicio contienen estos orígenes, tendrá que usar métodos alternativos para hacer referencia a sus datos.
Las subconsultas como una cláusula where, por ejemplo, POP_2010 = (SELECT min(POP_2010) FROM counties no se admiten.
¿Cómo se escribe una consulta estandarizada?
En el tema siguiente se describen las funciones de SQL admitidas en ArcGIS Server:
Funciones de SQL admitidas en ArcGIS Server
Puede usar este documento como ayuda para saber qué funciones de SQL se pueden usar para generar consultas estandarizadas que se puedan utilizar con servicios de mapas, entidades, imágenes y WFS en sus aplicaciones.
¿Cómo puedo saber si ArcGIS Server está usando consultas estandarizadas?
Tal como se ha indicado anteriormente, las consultas estandarizadas están habilitadas de forma predeterminada y se aplican a todos los servicios de mapas, entidades, imágenes y WFS en el sitio de ArcGIS Server. No obstante, un administrador del servidor puede comprobar que se estén utilizando las consultas estandarizadas iniciando sesión en el Directorio del ArcGIS Server Manager y accediendo a sistema > propiedades > actualizar. Si no se muestra ninguna propiedad del sistema en el cuadro de diálogo Propiedades del sistema o aparece {"standardizedQueries": "true"}, significa que las consultas estandarizadas están habilitadas.
De forma alternativa, los administradores, desarrolladores de aplicaciones y clientes pueden verificar que las consultas estandarizadas se utilicen accediendo a un servicio a través del directorio de servicios de ArcGIS Server y revisando la propiedad Usar consultas estandarizadas. Para los servicios de mapas, entidades y WFS, la propiedad se puede revisar accediendo a una capa o una tabla específica del servicio, por ejemplo, http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/service type/0. Para los servicios de imágenes, la propiedad está disponible en el extremo del servicio; por ejemplo, http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/ImageServer.
Puede consultar las instrucciones para acceder al Directorio del administrador o información sobre cómo inhabilitar las consultas estandarizadas en la sección siguiente de este tema.
Inhabilitar las consultas estandarizadas
Si necesita utilizar expresiones con cláusulas WHERE específicas de la base de datos en su aplicación, puede inhabilitar las consultas estandarizadas accediendo al Directorio del ArcGIS Server Manager. Para ello, siga las instrucciones siguientes.
Precaución:
Si inhabilita esta opción de seguridad, su sitio será más vulnerable a posibles ataques por inyección de SQL.
- Abra el directorio del Administrador e inicie sesión como usuario con permisos administrativos sobre el sitio. El Directorio del administrador suele estar disponible en http://gisserver.domain.com:6080/arcgis/admin.
- Haga clic en sistema > propiedades > actualizar.
- En la página Operación - actualizar, introduzca la cadena siguiente en el cuadro de diálogo Propiedades del sistema:
{"standardizedQueries": "false"}
- Haga clic en Actualizar.
- Reinicie ArcGIS Server.
Ahora el sitio está configurado para permitir a los usuarios enviar solicitudes a servicios de mapas, entidades, imágenes y WFS utilizando consultas no estándar. Para volver a habilitar las consultas estandarizadas, repita las instrucciones anteriores pero asigne el valor true a la propiedad standardizedQueries.