Безопасный доступ к данным (ADO.NET)
Обновлен: November 2007
Для записи безопасного кода ADO.NET необходимо понять механизмы безопасности, доступные в базовом хранилище данных или базе данных. Также необходимо рассмотреть влияние на безопасность остальных функций или компонентов, которые может содержать приложение.
Проверка подлинности, авторизация и разрешения
При соединении с Microsoft SQL Server можно применить проверку подлинности Windows, также известную как встроенная безопасность, использующую идентификатор текущего активного пользователя Windows, а не передачу идентификатора пользователя и пароль. Настоятельно рекомендуется использовать проверку подлинности Windows, поскольку учетные данные пользователя не отображаются в строке соединения. Если при соединении с SQL Server нельзя использовать проверку подлинности Windows, следует рассмотреть создание строк соединений во время выполнения с помощью SqlConnectionStringBuilder.
Учетные данные, используемые для проверки подлинности, необходимо обрабатывать по-разному в зависимости от типа приложения. Например, в приложении Windows Forms пользователю могут предложить ввести сведения для проверки подлинности либо могут использоваться учетные данные пользователя Windows. Однако веб-приложение часто осуществляет доступ к данным, используя учетные данные, поставляемые самим приложением, а не пользователем.
После проверки подлинности пользователей возможная область их действий зависит от предоставленных им разрешений. Всегда следуйте принципу минимальных прав доступа и предоставляйте только абсолютно необходимые разрешения.
Дополнительные сведения см. в следующих ресурсах.
Ресурс |
Описание |
---|---|
Приводятся рекомендации по безопасности и методы защиты данных подключения, например использование для шифрования строк подключения защищенной конфигурации. |
|
Содержит рекомендации для доступа к данным и выполнения операций над базой данных. |
|
Описывает способ построения строк соединения по данным, введенным пользователем во время выполнения. |
|
Описывает архитектуру безопасности SQL Server. |
Параметризованные команды и внедрение кода SQL
Использование параметризованных команд помогает защищаться от атак путем внедрения кода SQL, в которых атакующий «внедряет» в инструкцию SQL команду, нарушающую безопасность сервера. Параметризованные команды обеспечивают защиту против атак путем внедрения кода SQL, гарантируя, что данные, полученные от внешнего источника, передаются только как значения, а не как часть инструкции Transact-SQL. В результате команды Transact-SQL, вставленные в значение, не выполняются в источнике данных. Вместо этого они оцениваются только как значение параметра. В дополнение к повышенной безопасности параметризованные команды предоставляют удобный метод организации значений, передаваемых с инструкцией Transact-SQL или в хранимую процедуру.
Дополнительные сведения об использовании параметризованных команд см. в одном из следующих источников.
Ресурс |
Описание |
---|---|
Описывает способ использования параметров с DataAdapter. |
|
Описывает способ задания параметров и получения возвращаемого значения. |
|
Управление разрешениями с помощью хранимых процедур в SQL Server (ADO.NET) |
Описывает способ использования хранимых процедур SQL Server для инкапсуляции доступа к данным. |
Эксплойты сценариев
Эксплойты сценариев представляют собой еще одну форму внедрения кода, в которой используются вредоносные символы, вставленные в веб-страницу. Обозреватель не проверяет вставленные символы и обрабатывает их как часть страницы.
Дополнительные сведения см. в следующих ресурсах.
Ресурс |
Описание |
---|---|
Описывает, как защищаться от эксплойтов сценариев и инструкций SQL. |
Атаки зондированием
Для осуществления атаки на систему злоумышленники часто используют сведения из исключения, например имя сервера, базы данных или таблицы. Безусловно, исключения могут содержать конкретные сведения о приложении или источнике данных, поэтому можно сделать защиту приложения и источника данных более надежной, отображая для клиента только самые существенные сведения.
Дополнительные сведения см. в следующих ресурсах.
Ресурс |
Описание |
---|---|
Описывает основные формы таких структурированных средств обработки исключений, как конструкции «try/catch/finally». |
|
Описывает рекомендации по обработке исключений. |
Защита источников данных Microsoft Access и Excel
Если требования по безопасности являются минимальными или вообще отсутствуют, то Microsoft Access и Microsoft Excel вполне могут выступить в роли хранилища данных для приложения ADO.NET. Предусмотренные в них средства безопасности позволяют эффективно затруднить несанкционированный доступ, но если требуется добиться большего, чем просто воспрепятствовать вторжению со стороны неосведомленных пользователей, то на них не следует полагаться. Физические файлы данных для Access и Excel находятся в файловой системе и должны быть доступными для всех пользователей. В результате они становятся уязвимыми к атакам, что может привести к похищению или потере данных, поскольку эти файлы можно скопировать или изменить. Если требуется надежная система безопасности, следует использовать SQL Server или другую серверную базу данных, в которой физические файлы данных не считываются из файловой системы.
Дополнительные сведения о защите данных Access и Excel см. в одном из следующих источников.
Ресурс |
Описание |
---|---|
Описывает методы обеспечения безопасности для Access 2007, такие как шифрование файлов, администрирование паролей, преобразование баз данных в новые форматы ACCDB и ACCDE, а также использование других параметров безопасности. |
|
Описывает способ управления пользователями, имеющими доступ и разрешение на изменение данных Excel 2007. |
|
Защита базы данных Access и ее объектов с помощью безопасности на уровне пользователя (MDB) |
Применяется к Access 2003. Содержит инструкции по реализации средств безопасности на уровне пользователя для защиты данных в Access 2003. |
Основные сведения о роли информационных файлов рабочей группы в безопасности Access |
Описывает роль и связи информационного файла рабочей группы в безопасности Access 2003. |
Ответы на типичные вопросы по безопасности Microsoft Access для версий от 2.0 до 2000 |
Загружаемая версия часто задаваемых вопросов по безопасности Microsoft Access. |
Представляет решения известных проблем с безопасностью в Excel 2003. |
Корпоративные службы
COM+ содержит собственную модель безопасности, полагающуюся на учетные записи и олицетворение «процесс-поток» Windows NT. Пространство имен System.EnterpriseServices предоставляет оболочки, позволяющие приложениям .NET встраивать управляемый код со службами безопасности COM+ с помощью класса ServicedComponent.
Дополнительные сведения см. в следующих ресурсах.
Ресурс |
Описание |
---|---|
Описывает способ встраивания управляемого кода со службами безопасности COM+. |
|
Обсуждается способ использования классов в пространстве имен EnterpriseServices для создания обслуживаемых компонентов. |
Взаимодействие с неуправляемым кодом
Инфраструктура .NET Framework обеспечивает взаимодействие с неуправляемым кодом, включая компоненты COM, службы COM+, внешние библиотеки типов и многие службы операционной системы. Работа с неуправляемым кодом связана с выходом за пределы периметра безопасности для управляемого кода. И пользовательский код, и любой другой вызывающий его код должен иметь разрешение для неуправляемого кода (SecurityPermission с заданным флагом UnmanagedCode). Применение неуправляемого кода может привести к непреднамеренному созданию в приложении уязвимых мест системы безопасности. Таким образом, следует допускать возможность взаимодействия с неуправляемым кодом только в случае крайней необходимости.
Дополнительные сведения см. в следующих ресурсах.
Ресурс |
Описание |
---|---|
Содержит подразделы, описывающие представление COM-компонентов платформе .NET Framework и представление компонентов .NET Framework объектам COM. |
|
Содержит расширенные подразделы, такие как основные сборки взаимодействия, организация поточной обработки и пользовательская упаковка и передача. |
См. также
Основные понятия
Рекомендации по стратегиям доступа к данным
Защита сведений о соединении (ADO.NET)
Построители строк соединения (ADO.NET)