Проблемы безопасности массовой загрузки (SQLXML 4.0)

Ниже приведены рекомендации по безопасности при использовании массовой загрузки XML.

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

    Процесс массовой загрузки создает эти временные файлы со следующими разрешениями:

    • Процессу массовой загрузки предоставляется доступ на Чтение/Запись/Удаление.

    • Разрешение на чтение предоставляется всем пользователям, так как учетная запись, под которой Microsoft SQL Server будет осуществлять доступ к этим файлам, не известна. Можно ограничить доступ к этим временным файлам, задав соответствующие разрешения на каталог, содержащий файлы.

  • Массовая загрузка XML сама по себе не имеет настроек разрешения. Предполагается, что база данных настроена верно, и пользовательский контекст (то есть имя входа, которое используется массовой загрузкой) имеет соответствующий набор разрешений.

  • В нетранзактном режиме в случае возникновения ошибки в процессе массовой загрузки данные могут остаться в состоянии частичной загрузки. В этом случае массовая загрузка просто останавливается. Чтоб смягчить эту проблему, можно использовать транзактный режим.

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

  • Массовая загрузка не накладывает ограничения на размер обрабатываемых данных. Массовая загрузка на выполняет проверку размера загружаемых данных. Пользователь отвечает за то, чтобы обеспечить в процессе массовой загрузки достаточный объем памяти для обработки указанного файла и достаточное пространство в базе данных для хранения загружаемых данных.

  • Массовая загрузка не осуществляет попыток использовать полученные данные как код. Входные данные никогда не выполняются никаким образом. Любой код и команды во входных данных рассматриваются как обычные данные и не выполняются.

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

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

  • Массовая загрузка может создать и удалить временные таблицы в базе данных, для этого ей необходимы разрешения. Разрешения на эти таблицы будут даны пользователю, который подключается к базе данных для выполнения процесса массовой загрузки.

  • Массовая загрузка может создать и удалить временные файлы, используемые при обработке в транзактном режиме, для этого ей необходимы разрешения. Эти файлы создаются с теми же разрешениями, с которыми запускается текущий пользователь потока внутри массовой загрузки.

  • Если пользователь задает для SQLXML файл журнала ошибок для записи ошибок, то каждый раз при выполнении массовой загрузки этот файл будет перезаписываться данными последнего процесса массовой загрузки.