ArcGIS Server имеет параметр безопасности, заставляющий разработчиков при работе с картографическим сервисом, сервисами объектов, изображений и WFS через REST или SOAP использовать стандартизированные SQL-запросы. Это позволяет упростить запросы разработчиков и приложений к сервисам ArcGIS Server и помогает предотвращать SQL-атаки. Стандартизированные запросы используются по умолчанию, однако, они могут быть отключены администратором сервера.
Каким образом нас затрагивают стандартизированные запросы?
При активации стандартизированных запросов, ArcGIS проверяет стандартный синтаксис и не допускает использования функций и синтаксиса, предназначенных только для определенных баз данных. Если вы разрабатываете приложения и используете специфический для базы данных синтаксис и функции, вам необходимо обновить выражения where в коде вашей программы с целью использования стандартного синтаксиса SQL, поддерживаемого ArcGIS. Либо можно отключить для ArcGIS Server проверку стандартизарованных запросов.
Ограничения стандартизированных запросов
Стандартизированные запросы применяются ко всему сайту ArcGIS Server и не могут быть включены для одних сервисов и выключены – для других.
Стандартизированные запросы не поддерживаются в соединениях между различными рабочими областями. Также не поддерживаются таблицы базы данных, доступные с помощью файла подключения OLE DB. Если данные сервиса содержат такие источники, следует использовать альтернативные методы для построения ссылок на данные.
Подзапросы, такие как выражение where, например, POP_2010 = (SELECT min(POP_2010) FROM counties не поддерживаются.
Как написать стандартизированный запрос?
В следующем разделе описываются SQL-функции, поддерживающиеся в ArcGIS Server:
SQL-функции, поддерживающиеся в ArcGIS Server
Используйте этот документ для определения SQL-функций, которые могут применяться для создания стандартизированных запросов, подходящих для картографических сервисов, сервисов объектов, изображений и WFS в ваших приложениях.
Как определить, используются ли стандартизированные запросы в ArcGIS Server?
Как указано выше, стандартизированные запросы включены по умолчанию и применяются ко всем картографическим сервисам, сервисам объектов, изображений и WFS на сайте ArcGIS Server. Однако администратор сервера может убедиться, что используются стандартные запросы, войдя в 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.
Для получения инструкций о порядке доступа к Administrator Directory и выключении стандартизированных запросов обратитесь к следующей части данного раздела.
Отключение стандартизированных запросов
Если в вашем приложении необходимо работать с выражениями where, специфическими для конкретной базы данных, выключите стандартизированные запросы в ArcGIS Server Administrator Directory. Для этого проделайте следующее.
Внимание:
Отключив опцию безопасности, вы сделаете ваш сайт более уязвимым по отношению к SQL-атакам.
- Откройте Administrator Directory и войдите под пользователем, имеющим права администратора вашего сайта . Administrator Directory обычно доступна по адресу http://gisserver.domain.com:6080/arcgis/admin.
- Щелкните система (system) > свойства (properties) > обновить (update).
- На странице Operation (операция) – update (обновить) введите в диалоговом окне Свойства системы (System Properties) следующую строку:
{"standardizedQueries": "false"}
- Щелкните Обновить (Update).
- Перезапустите ArcGIS for Server.
Теперь ваш сайт позволяет пользователям посылать нестандартизированные запросы к картографическим сервисам, сервисам объектов, изображений и WFS. Чтобы снова включить стандартизированные запросы, повторите описанные выше шаги еще раз, но установите значение true для свойства standardizedQueries.