Защита сведений о подключении
Защита доступа к источникам данным - одна из важнейших целей защиты приложения. Строка подключения представляет потенциальную уязвимость, если она не защищена. Сохранение сведений о соединении в виде простого текста или сохранение их в памяти представляет угрозу безопасности всей системы. Строки подключения, внедренные в исходный код, можно считывать с помощью Ildasm.exe (IL Disassembler) для просмотра общего промежуточного языка (CIL) в скомпилированной сборке.
Уязвимые места системы безопасности, связанные со строками соединения, могут возникать в зависимости от используемого типа проверки подлинности, способа сохранения строк соединения в памяти или на диске, и методов, используемых для их конструирования
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Если вы подключаетесь к SQL Azure, управляемые удостоверения для ресурсов 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="*****" />
Фиксированная учетная запись идентификации должна быть учетной записью с ограниченными правами, которой предоставлены только необходимые разрешения в базе данных. Кроме того, нужно зашифровать файл конфигурации, чтобы имя пользователя и пароль не были представлены в виде открытого текста.
Внимание
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, требует очень высокого уровня доверия к приложению и несет риски, которые отсутствуют в других потоках. Этот поток следует использовать только в том случае, если другие более безопасные потоки, такие как управляемые удостоверения, не являются жизнеспособными.
Не используйте файлы универсального канала данных (UDL)
Не храните строки соединения для OleDbConnection в UDL-файле. Универсальные связи данных хранятся в виде открытого текста и не могут быть зашифрованы. UDL-файл — это внешний ресурс на основе файлов в приложении, и его невозможно защитить или зашифровать с помощью платформа .NET Framework.
Защититесь от атак путем внедрения кода SQL с помощью построителей строк подключения
Атака путем внедрения кода в строку соединения может произойти, когда для построения строк соединения на основе ввода пользователя используется динамическое объединение строк. Если входные данные пользователя не проверяются и опасный текст или символы не экранированы, то злоумышленник может получить доступ к конфиденциальным данным или другим ресурсам на сервере. Чтобы устранить эту проблему, в 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. Дополнительные сведения об основах хранения, извлечения и шифрования строка подключения из файлов конфигурации см. в разделе "Строки подключения" и "Файлы конфигурации".