Бөлісу құралы:


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

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

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

Внимание

Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Если вы подключаетесь к Azure SQL, Управляемые удостоверения для ресурсов Azure — это рекомендуемый метод проверки подлинности.

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

Чтобы ограничить доступ к источнику данных, необходимо защитить сведения о безопасном соединении, например, идентификатор пользователя, пароль и имя источника данных. Чтобы избежать предоставления сведений о пользователях, рекомендуется использовать проверка подлинности Windows (иногда называемую интегрированной безопасностью) для локальных источников данных. (Однако при подключении к SQL Azure следует использовать Управляемые удостоверения для ресурсов Azure.) Проверка подлинности 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.

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

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

Используйте Persist Security Info=False

По умолчанию параметр 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. Дополнительные сведения об основах хранения, извлечения и шифрования строка подключения из файлов конфигурации см. в разделе "Строки подключения" и "Файлы конфигурации".

См. также