Поделиться через


Функции проектирования безопасности ADO

В следующих разделах описаны функции проектирования безопасности в объектах данных ActiveX (ADO) 2.8 и более поздних версиях. Эти изменения были внесены в ADO 2.8 для повышения безопасности. ADO 6.0, который входит в состав Windows DAC 6.0 в Windows Vista, функционально эквивалентен ADO 2.8, который был включен в MDAC 2.8 в Windows XP и Windows Server 2003. В этом разделе содержатся сведения о том, как защитить приложения в ADO 2.8 или более поздней версии.

Важный

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

Сценарии доступа к файлам Internet Explorer

Следующие функции влияют на работу ADO 2.8 и более поздних версий при использовании в скриптированных веб-страницах в Internet Explorer.

Обновлено и улучшено окно предупреждения системы безопасности, которое теперь используется для оповещения пользователей

Для ADO 2.7 и более ранних версий следующее предупреждающее сообщение появляется при попытке запуска кода ADO из недоверенного поставщика:

This page accesses data on another domain. Do you want to allow this? To
avoid this message in Internet Explorer, you can add a secure Web site to
your Trusted Sites zone on the Security tab of the Internet Options dialog
box.

Для ADO 2.8 и более поздних версий предыдущее сообщение больше не отображается. Вместо этого в этом контексте отображается следующее сообщение:

This Website uses a data provider that may be unsafe. If you trust the
Website, click OK, otherwise click Cancel.

Предыдущее сообщение позволяет пользователю принимать обоснованные решения, зная о последствиях любого выбора:

  • Если пользователь доверяет сайту, нажатием "ОК" будет разрешено всем дискобезопасным кодам (все методы и свойства ADO, за исключением API-интерфейсов, доступных на диске, описанных далее в этом разделе) выполняться в окне браузера.

  • Если пользователь не доверяет сайту, нажатие кнопки "Отмена" блокирует код ADO для доступа к данным от запуска и выполнения в полном объеме.

Доступный для диска код теперь ограничен доверенными сайтами

В ADO 2.8 были внесены дополнительные изменения в дизайне, которые, в частности, ограничивают возможности ограниченного набора API, тем самым предотвращая потенциальную возможность считывания или записи данных в файлы на локальном компьютере. Ниже приведены методы API, которые были более ограничены для безопасности при запуске Internet Explorer:

  • Для объекта ADO Stream используются методы LoadFromFile или SaveToFile.

  • Для объекта ADO Recordset, если используется метод Save или метод Open, например, когда задана опция adCmdFile или используется поставщик сохраняемости Microsoft OLE DB (MSPersist) .

Для этих ограниченных наборов потенциально доступных на диске функций происходит следующее поведение для ADO 2.8 и более поздних версий, если любой код, использующий эти методы, выполняется в Internet Explorer:

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

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

    Заметка

    В ADO 2.8 и более поздних версиях пользователь не оповещается или не рекомендуется добавлять сайты в список зон надежных сайтов. Поэтому управление списком надежных сайтов является ответственностью тех, кто развертывает или поддерживает приложения на основе веб-сайтов, которым требуется доступ к локальной файловой системе.

Доступ к свойству ActiveCommand в объектах Recordset заблокирован

При запуске в Internet Explorer ADO 2.8 теперь блокирует доступ к свойству ActiveCommand для активного объекта Recordset и возвращает ошибку. Ошибка возникает независимо от того, поступает ли страница из веб-сайта, зарегистрированного в списке надежных сайтов.

Изменения в обработке поставщиков OLE DB и интегрированной безопасности

При анализе ADO 2.7 и более ранних версий на предмет потенциальных проблем безопасности и других вопросов была выявлена следующая ситуация:

В некоторых случаях поставщики OLE DB, поддерживающие свойство Встроенной безопасности DBPROP_AUTH_INTEGRATED, могут позволить скриптируемым веб-страницам повторно использовать объект подключения ADO для подключения непреднамеренно к другим серверам с использованием текущих учетных данных для входа пользователей. Чтобы предотвратить это, ADO 2.8 и более поздние версии обрабатывают поставщиков OLE DB в зависимости от того, как они решили обеспечить или не обеспечить встроенную безопасность.

Для веб-страниц, загруженных с сайтов, перечисленных в списке зон надежных сайтов, в следующей таблице приводится разбивка того, как ADO 2.8 и более поздних версий управляет подключениями ADO в каждом случае.

Параметры IE для проверки подлинности пользователя, входа в систему Поставщик поддерживает "Интегрированную безопасность", и UID и PWD указаны (SQLOLEDB) Поставщик не поддерживает функцию "Встроенная безопасность" (JOLT, MSDASQL, MSPersist) Поставщик поддерживает "Интегрированную безопасность" и установлено значение SSPI (не указаны UID/PWD).
Автоматический вход с текущим именем пользователя и паролем Разрешить подключение Разрешить подключение Разрешить подключение
Запрос имени пользователя и пароля Разрешить подключение Сбой подключения Сбой подключения
Автоматический вход только в зоне интрасети Разрешить подключение Предупредите пользователя о безопасности. Оповестить пользователя предупреждением о безопасности
Анонимный вход Разрешить подключение Сбой подключения Сбой подключения

В случае, когда появится предупреждение системы безопасности, поле сообщения сообщает пользователям:

This Website is using your identity to access a data source. If you trust this Website, click OK, otherwise click Cancel.

Предыдущее сообщение позволяет пользователю принимать более обоснованное решение и продолжать соответствующим образом.

Заметка

Для ненадежных сайтов (т. е. сайтов, не перечисленных в списке зон надежных сайтов), если поставщик также недоверен (как описано ранее в этом разделе), пользователь может увидеть два предупреждения безопасности подряд: предупреждение о небезопасном поставщике и второе предупреждение о попытке использования их удостоверения. Если пользователь нажимает кнопку "ОК" к первому предупреждению, выполняются параметры Internet Explorer и код поведения ответа, описанные в предыдущей таблице.

Управление тем, возвращается ли текст пароля в строках подключения ADO

При попытке получить значение свойства ConnectionString в объекте ADO Connection происходит следующее:

  1. Если подключение открыто, выполняется вызов инициализации к базовому провайдеру OLE DB, чтобы получить строку подключения.

  2. В зависимости от параметра в поставщике OLE DB, свойство DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO включает пароли вместе с другой информацией о строке подключения, которая возвращается.

Например, если динамическое свойство ADO Connection Сохранить сведения о безопасности имеет значение True, сведения о пароле включены в возвращаемую строку подключения. В противном случае, если базовый поставщик установил свойство на False (например, с использованием поставщика SQLOLEDB), из возвращаемой строки подключения будут опущены сведения о пароле.

Если вы используете сторонние поставщики OLE DB (то есть не Майкрософт) с кодом приложения ADO, вы можете проверить, как реализовано свойство DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, чтобы определить, разрешено ли включение сведений о паролях со строками подключения ADO.

Проверка нефайловых устройств при загрузке и сохранении наборов записей или потоков

Для ADO 2.7 и более ранних версий операции ввода и вывода файлов, такие как Open и Save, которые использовались для чтения и записи данных на основе файлов, могут в некоторых случаях разрешить использовать URL-адрес или имя файла, указанный не на диске. Например, LPT1, COM2, PRN.TXT, AUX может использоваться в качестве псевдонима для входных и выходных данных между принтерами и вспомогательными устройствами в системе с использованием определенных значений.

Для ADO 2.8 и более поздних версий эта функция была обновлена. Для открытия и сохранения объектов набора записей и Stream, ADO теперь выполняет проверку типа файла, чтобы убедиться, что устройство ввода или вывода, указанное в URL-адресе или имени файла, является фактическим файлом.

Заметка

Проверка типов файлов, как описано в этом разделе, применяется только для Windows 2000 и более поздних версий. Это не относится к ситуациям, когда ADO 2.8 или более поздней версии работает в более ранних выпусках Windows, таких как Windows 98.