Безопасный доступ к даннымSecure Data Access

Для записи безопасного кода ADO.NET необходимо понять механизмы безопасности, доступные в базовом хранилище данных или базе данных.To write secure ADO.NET code, you have to understand the security mechanisms available in the underlying data store, or database. Также необходимо рассмотреть влияние на безопасность остальных возможностей или компонентов, которые может содержать приложение.You also need to consider the security implications of other features or components that your application may contain.

Проверка подлинности, авторизация и разрешенияAuthentication, Authorization and Permissions

При соединении с Microsoft SQL Server можно применить проверку подлинности Windows, также известную как встроенная безопасность, использующую идентификатор текущего активного пользователя Windows, а не передачу идентификатора пользователя и пароль.When connecting to Microsoft SQL Server, you can use Windows Authentication, also known as Integrated Security, which uses the identity of the current active Windows user rather than passing a user ID and password. Настоятельно рекомендуется использовать проверку подлинности Windows, поскольку учетные данные пользователя не отображаются в строке соединения.Using Windows Authentication is highly recommended because user credentials are not exposed in the connection string. Если при соединении с SQL Server нельзя использовать проверку подлинности Windows, следует рассмотреть создание строк соединений во время выполнения с помощью SqlConnectionStringBuilder.If you cannot use Windows Authentication to connect to SQL Server, then consider creating connection strings at run time using the SqlConnectionStringBuilder.

Учетные данные, используемые для проверки подлинности, необходимо обрабатывать по-разному в зависимости от типа приложения.The credentials used for authentication need to be handled differently based on the type of application. Например, в приложении Windows Forms пользователю могут предложить ввести сведения для проверки подлинности либо могут использоваться учетные данные пользователя Windows.For example, in a Windows Forms application, the user can be prompted to supply authentication information, or the user's Windows credentials can be used. Однако веб-приложение часто осуществляет доступ к данным, используя учетные данные, поставляемые самим приложением, а не пользователем.However, a Web application often accesses data using credentials supplied by the application itself rather than by the user.

После проверки подлинности пользователей возможная область их действий зависит от предоставленных им разрешений.Once users have been authenticated, the scope of their actions depends on the permissions that have been granted to them. Всегда следуйте принципу минимальных прав доступа и предоставляйте только абсолютно необходимые разрешения.Always follow the principle of least privilege and grant only permissions that are absolutely necessary.

Для получения дополнительных сведений см. следующие ресурсы.For more information, see the following resources.

РесурсResource ОписаниеDescription
Защита сведений о подключенииProtecting Connection Information Приводятся рекомендации по безопасности и методы защиты данных подключения, например использование для шифрования строк подключения защищенной конфигурации.Describes security best practices and techniques for protecting connection information, such as using protected configuration to encrypt connection strings.
Рекомендации по стратегиям доступа к даннымRecommendations for Data Access Strategies Содержит рекомендации для доступа к данным и выполнения операций над базой данных.Provides recommendations for accessing data and performing database operations.
Построители строк подключенияConnection String Builders Описывает способ построения строк соединения по данным, введенным пользователем во время выполнения.Describes how to build connection strings from user input at run time.
Общие сведения о безопасности SQL ServerOverview of SQL Server Security Описывает архитектуру безопасности SQL Server.Describes the SQL Server security architecture.

Параметризованные команды и внедрение кода SQLParameterized Commands and SQL Injection

Использование параметризованных команд помогает защищаться от атак путем внедрения кода SQL, в которых атакующий «внедряет» в инструкцию SQL команду, нарушающую безопасность сервера.Using parameterized commands helps guard against SQL injection attacks, in which an attacker "injects" a command into a SQL statement that compromises security on the server. Параметризованные команды обеспечивают защиту против атак путем внедрения кода SQL, гарантируя, что данные, полученные от внешнего источника, передаются только как значения, а не как часть инструкции Transact-SQL.Parameterized commands guard against a SQL injection attack by ensuring that values received from an external source are passed as values only, and not part of the Transact-SQL statement. В результате команды Transact-SQL, вставленные в значение, не выполняются в источнике данных.As a result, Transact-SQL commands inserted into a value are not executed at the data source. Вместо этого они оцениваются только как значение параметра.Rather, they are evaluated solely as a parameter value. В дополнение к повышенной безопасности параметризованные команды предоставляют удобный метод организации значений, передаваемых с инструкцией Transact-SQL или в хранимую процедуру.In addition to the security benefits, parameterized commands provide a convenient method for organizing values passed with a Transact-SQL statement or to a stored procedure.

Дополнительные сведения об использовании параметризованных команд см. в одном из следующих источников.For more information on using parameterized commands, see the following resources.

РесурсResource ОписаниеDescription
Параметры DataAdapterDataAdapter Parameters Описывает способ использования параметров с DataAdapter.Describes how to use parameters with a DataAdapter.
Изменение данных с помощью хранимых процедурModifying Data with Stored Procedures Описывает способ задания параметров и получения возвращаемого значения.Describes how to specify parameters and obtain a return value.
Управление разрешениями с использованием хранимых процедур в SQL ServerManaging Permissions with Stored Procedures in SQL Server Описывает способ использования хранимых процедур SQL Server для инкапсуляции доступа к данным.Describes how to use SQL Server stored procedures to encapsulate data access.

Эксплойты скриптовScript Exploits

Эксплойты скриптов представляют собой еще одну форму внедрения кода, в которой используются вредоносные символы, вставленные в веб-страницу.A script exploit is another form of injection that uses malicious characters inserted into a Web page. Браузер не проверяет вставленные символы и обрабатывает их как часть страницы.The browser does not validate the inserted characters and will process them as part of the page.

Для получения дополнительных сведений см. следующие ресурсы.For more information, see the following resources.

РесурсResource ОписаниеDescription
Общие сведения об эксплойтах сценариевScript Exploits Overview Описывает, как защищаться от эксплойтов скриптов и инструкций SQL.Describes how to guard against scripting and SQL statement exploits.

Атаки зондированиемProbing Attacks

Для осуществления атаки на систему злоумышленники часто используют сведения из исключения, например имя сервера, базы данных или таблицы.Attackers often use information from an exception, such as the name of your server, database, or table, to mount an attack on your system. Безусловно, исключения могут содержать конкретные сведения о приложении или источнике данных, поэтому можно сделать защиту приложения и источника данных более надежной, отображая для клиента только самые существенные сведения.Because exceptions can contain specific information about your application or data source, you can help keep your application and data source better protected by only exposing essential information to the client.

Для получения дополнительных сведений см. следующие ресурсы.For more information, see the following resources.

РесурсResource ОписаниеDescription
Обработка и создание исключений в .NETHandling and throwing exceptions in .NET Описывает основные формы таких структурированных средств обработки исключений, как конструкции «try/catch/finally».Describes the basic forms of try/catch/finally structured exception handling.
Рекомендации по обработке исключенийBest Practices for Exceptions Описывает рекомендации по обработке исключений.Describes best practices for handling exceptions.

Защита источников данных Microsoft Access и ExcelProtecting Microsoft Access and Excel Data Sources

Если требования по безопасности являются минимальными или вообще отсутствуют, то Microsoft Access и Microsoft Excel вполне могут выступить в роли хранилища данных для приложения ADO.NET.Microsoft Access and Microsoft Excel can act as a data store for an ADO.NET application when security requirements are minimal or nonexistent. Предусмотренные в них средства безопасности позволяют эффективно затруднить несанкционированный доступ, но если требуется добиться большего, чем просто воспрепятствовать вторжению со стороны неосведомленных пользователей, то на них не следует полагаться.Their security features are effective for deterrence, but should not be relied upon to do more than discourage meddling by uninformed users. Физические файлы данных для Access и Excel находятся в файловой системе и должны быть доступными для всех пользователей.The physical data files for Access and Excel exist on the file system, and must be accessible to all users. В результате они становятся уязвимыми к атакам, что может привести к похищению или потере данных, поскольку эти файлы можно скопировать или изменить.This makes them vulnerable to attacks that could result in theft or data loss since the files can be easily copied or altered. Если требуется надежная система безопасности, следует использовать SQL Server или другую серверную базу данных, в которой физические файлы данных не считываются из файловой системы.When robust security is required, use SQL Server or another server-based database where the physical data files are not readable from the file system.

Дополнительные сведения о защите данных Access и Excel см. в одном из следующих источников.For more information on protecting Access and Excel data, see the following resources.

РесурсResource ОписаниеDescription
Вопросы безопасности и руководство по Access 2007Security Considerations and Guidance for Access 2007 Описывает методы обеспечения безопасности для Access 2007, такие как шифрование файлов, администрирование паролей, преобразование баз данных в новые форматы ACCDB и ACCDE, а также использование других параметров безопасности.Describes security techniques for Access 2007 such encrypting files, administering passwords, converting databases to the new ACCDB and ACCDE formats, and using other security options.
Общие сведения о безопасности Access 2010Introduction to Access 2010 security Содержит общие сведения о функциях безопасности, предлагаемых Access 2010.Provides an overview of the security features offered by Access 2010.

Корпоративные службыEnterprise Services

COM+ содержит собственную модель безопасности, полагающуюся на учетные записи и олицетворение «процесс-поток» Windows NT.COM+ contains its own security model that relies on Windows NT accounts and process/thread impersonation. Пространство имен System.EnterpriseServices предоставляет оболочки, позволяющие приложениям .NET встраивать управляемый код со службами безопасности COM+ с помощью класса ServicedComponent.The System.EnterpriseServices namespace provides wrappers that allow .NET applications to integrate managed code with COM+ security services through the ServicedComponent class.

Дополнительные сведения см. в следующих ресурсах.For more information, see the following resource.

РесурсResource ОписаниеDescription
Безопасность на основе ролейRole-Based Security Описывает способ встраивания управляемого кода со службами безопасности COM+.Discusses how to integrate managed code with COM+ security services.

Взаимодействие с неуправляемым кодомInteroperating with Unmanaged Code

Инфраструктура .NET Framework обеспечивает взаимодействие с неуправляемым кодом, включая компоненты COM, службы COM+, внешние библиотеки типов и многие службы операционной системы.The .NET Framework provides for interaction with unmanaged code, including COM components, COM+ services, external type libraries, and many operating system services. Работа с неуправляемым кодом связана с выходом за пределы периметра безопасности для управляемого кода.Working with unmanaged code involves going outside the security perimeter for managed code. И пользовательский код, и любой другой вызывающий его код должен иметь разрешение для неуправляемого кода (SecurityPermission с заданным флагом UnmanagedCode).Both your code and any code that calls it must have unmanaged code permission (SecurityPermission with the UnmanagedCode flag specified). Применение неуправляемого кода может привести к непреднамеренному созданию в приложении уязвимых мест системы безопасности.Unmanaged code can introduce unintended security vulnerabilities into your application. Таким образом, следует допускать возможность взаимодействия с неуправляемым кодом только в случае крайней необходимости.Therefore, you should avoid interoperating with unmanaged code unless it is absolutely necessary.

Для получения дополнительных сведений см. следующие ресурсы.For more information, see the following resources.

РесурсResource ОписаниеDescription
Взаимодействие с неуправляемым кодомInteroperating with Unmanaged Code Содержит подразделы, описывающие представление COM-компонентов платформе .NET Framework и представление компонентов .NET Framework объектам COM.Contains topics describing how to expose COM components to the .NET Framework and how to expose .NET Framework components to COM.
Расширенное COM-взаимодействиеAdvanced COM Interoperability Содержит расширенные подразделы, такие как основные сборки взаимодействия, организация поточной обработки и пользовательская упаковка и передача.Contains advanced topics such as primary interop assemblies, threading and custom marshaling.

См. такжеSee also