Защита сведений о подключении

Защита доступа к источникам данным - одна из важнейших целей защиты приложения. Строка соединения представляет собой потенциальную уязвимость, если она не защищена. Сохранение сведений о соединении в виде простого текста или сохранение их в памяти представляет угрозу безопасности всей системы. строки Подключение ion, внедренные в исходный код, можно считывать с помощью Ildasm.exe (IL Disassembler) для просмотра общего промежуточного языка (CIL) в скомпилированной сборке.

Уязвимые места системы безопасности, связанные со строками соединения, могут возникать в зависимости от используемого типа проверки подлинности, способа сохранения строк соединения в памяти или на диске, и методов, используемых для их конструирования

Использовать проверку подлинности Windows

Чтобы ограничить доступ к источнику данных, необходимо защитить сведения о безопасном соединении, например, идентификатор пользователя, пароль и имя источника данных. Чтобы не показывать сведения о пользователе, рекомендуется использовать аутентификацию Windows (которую иногда называют встроенной безопасностью) всегда, когда это возможно. Проверка подлинности Windows указывается в строке соединения с помощью ключевых слов Integrated Security или Trusted_Connection, что исключает необходимость указывать идентификатор пользователя и пароль. Когда используется проверка подлинности Windows, пользователей проверяет операционная система Windows, а доступ к ресурсам сервера и базы данных определяется предоставлением разрешений пользователям и группам Windows.

В ситуациях, когда невозможно использовать проверку подлинности Windows, необходимо проявлять дополнительную осторожность, так как учетные данные пользователя представлены в строке соединения. В приложении ASP.NET можно настроить учетную запись Windows как фиксированное удостоверение, которое используется для подключения к базам данных и другим сетевым ресурсам. Олицетворение включается в элементе-идентификаторе в файле web.config, при этом указываются имя пользователя и пароль.

<identity impersonate="true"
        userName="MyDomain\UserAccount"
        password="*****" />

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

Не храните строки соединения для OleDbConnection в UDL-файле. Универсальные связи данных хранятся в виде открытого текста и не могут быть зашифрованы. UDL-файл — внешний файловый ресурс для приложения, его нельзя защитить или зашифровать с помощью платформы .NET Framework.

Защититесь от атак путем внедрения кода SQL с помощью построителей строк подключения

Атака путем внедрения кода в строку соединения может произойти, когда для построения строк соединения на основе ввода пользователя используется динамическое объединение строк. Если входные данные пользователя не проверяются и опасный текст или символы не экранированы, то злоумышленник может получить доступ к конфиденциальным данным или другим ресурсам на сервере. Чтобы устранить эту проблему, в ADO.NET 2.0 добавлены новые классы построителя строк подключения, позволяющие проверить синтаксис строки подключения и убедиться, что в нее не внесены дополнительные параметры. Дополнительные сведения см. в статье Connection String Builders (Построители строк подключения).

Используйте значение False параметра Persist Security Info

По умолчанию параметр Persist Security Info имеет значение false. Рекомендуется использовать это значение по умолчанию во всех строках соединения. Присвоение параметру Persist Security Info значения true или yes позволяет получить конфиденциальные сведения, в том числе идентификатор пользователя и пароль, из соединения после того, как оно будет открыто. Если параметру Persist Security Info присвоено значение false или no, то сведения безопасности отбрасываются после того, как они используются для открытия соединения. Таким образом, ненадежный источник не получает доступа к конфиденциальным данным.

Шифрование файлов конфигурации

Строки соединения можно сохранить в файлах конфигурации, что исключает необходимость внедрять их в код приложения. Файлы конфигурации представляют собой стандартные XML-файлы, для которых в платформе .NET Framework определен типовой набор элементов. Строки соединения в файлах конфигурации обычно хранятся в элементе <connectionStrings> в app.config для приложения Windows или в файле web.config для приложения ASP.NET. Дополнительные сведения об основах хранения, извлечения и шифрования строка подключения из файлов конфигурации см. в разделе Подключение строки и файлы конфигурации.

См. также