Бөлісу құралы:


Основные проблемы безопасности SQLXML

Область применения: SQL Server База данных SQL Azure

Далее приведены рекомендации по безопасности при использовании SQLXML для доступа к данным.

  • Поставщик SQLXMLOLEDB предоставляет свойство StreamFlags , позволяющее задать флаги, указывающие, какие функции SQLXML должны быть включены или отключены для каждого конкретного экземпляра. При помощи этого свойства можно настраивать использование SQLXML, а также гарантировать, что работать будут только требуемые компоненты. Дополнительные сведения см. в разделе о поставщике SQLXMLOLEDB (SQLXML 4.0).

  • Когда возникают и возвращаются ошибки SQLXML, они могут содержать такие сведения о схеме базы данных, как имена таблиц, имена столбцов или сведения о типе. При обработке этих ошибок следует учесть, что сведения об установке SQL Server не легко обнаруживаются пользователями, где они не предназначены или необходимы.

  • При использовании для запроса или отправки обновлений в SQL Server SQLXML не ограничивает объем данных, которые можно обменять и не проверяет размер данных в полезных данных SQLXML перед попыткой его обработки. При разработке приложения с использованием SQLXML следует самостоятельно позаботиться о наличии достаточного объема памяти в системе для обработки этих данных. Например, при запросе данных с сервера следует проверить, что на клиенте достаточно свободной памяти, чтобы принять их. Точно так же при загрузке данных на сервер необходимо проверить наличие достаточного объема свободной памяти на сервере для их обработки, а также достаточного объема свободного дискового пространства на сервере для хранения данных.

  • SQLXML динамически создает запросы Transact-SQL и команды обновления и отправляет их в SQL Server для выполнения. SQLXML выполняет запросы и обновляет сервер только таким образом. Результаты будут получены либо в виде потока (XML-данных), либо как набор строк.

  • SQLXML (при получении результатов запроса) не предпринимает каких-либо действий, исходя из содержимого получаемых данных. Никакой дополнительной обработки на основе типа или содержимого данных не производится. Данные никогда не рассматриваются как код, с помощью которого нужно выполнять действия.

  • При выполнении XML-шаблонов SQLXML преобразует запросы XPath и DBObject, содержащиеся в отправленном шаблоне, в команды Transact-SQL, которые затем выполняются в SQL Server. Только эти команды всегда затрагивают существующие данные. Команды, сформированные SQLXML, никогда не изменяют структуру базы данных. Пользователь должен явным образом дать команду на изменение структуры базы данных. Например, включив их в блок sql:query шаблона.

  • При выполнении запросов DBObject и инструкций XPath над файлами сопоставлений SQLXML никак не меняет данные в базе данных.

  • SQLXML может вносить изменения в форматирование данных на основе различий между моделями данных XML и SQL Server. Например, различаются форматы задания времени. SQLXML попытается разрешить эти различия. В результате некоторая часть данных о точности может быть потеряна.

  • SQLXML не ограничивает количество времени, которое требуется для обработки данных. Обработка будет выполняться до возникновения ошибки либо завершения обработки.

  • SQLXML не выполняет запись в файловую систему. Если пользователям требуется сохранить данные, получаемые из базы данных, им придется выполнить сохранение в коде.

  • SQLXML позволяет пользователям выполнять любой SQL-запрос к базе данных. Эту функциональность не следует делать доступной для небезопасного или неуправляемого источника, поскольку по сути это является открытием базы данных для любых пользователей.

  • При выполнении диаграмм обновления SQLXML преобразует блоки updg:sync в команды DELETE, UPDATE и INSERT для экземпляра SQL Server. Только эти команды всегда затрагивают существующие данные. Команды, сформированные SQLXML, никогда не изменяют базу данных. Пользователь должен явным образом дать команду на изменение структуры базы данных. Например, включив их в блок sql:query шаблона.

  • При выполнении DiffGrams SQLXML преобразует DiffGram в КОМАНДЫ DELETE, UPDATE и INSERT для экземпляра SQL Server. Только эти команды всегда затрагивают существующие данные. Команды, сформированные SQLXML, никогда не изменяют базу данных. Пользователь должен явным образом дать команду на изменение структуры базы данных. Например, включив их в блок sql:query шаблона.

См. также

Проблемы безопасности SQLXML 4.0