Перейти к содержимому

Persist security info true что это

  • автор:

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

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

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

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

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

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

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

Не используйте файлы в формате UDL (Universal Data Link)

Не храните строки соединения для 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 определен типовой набор элементов. Строки соединения в файлах конфигурации обычно хранятся в элементе в app.config для приложения Windows или в файле web.config для приложения ASP.NET. Дополнительные сведения об основах хранения, извлечения и шифрования строк подключения из файлов конфигурации см. в разделе Строки подключения и файлы конфигурации.

См. также раздел

  • Защита приложений ADO.NET
  • Шифрование сведений о конфигурации с помощью функции защищенной конфигурации
  • Безопасность в .NET
  • Общие сведения об ADO.NET

Persist security info true что это

Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6

Последнее обновление: 31.10.2015

После определения источника данных мы можем к нему подключаться. Для этого создадим проект простого консольного приложения.

Первым делом нам надо определить строку подключения, предоставляющая информацию о базе данных и сервере, к которым предстоит установить подключение:

class Program < static void Main(string[] args) < string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; >>

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

Строка подключения представляет набор параметров в виде пар ключ=значение . В данном случае для подключения к ранее созданной базе данных usersdb мы определяем строку подключения из трех параметров:

  • Data Source : указывает на название сервера. По умолчанию это «.\SQLEXPRESS». Поскольку в строке используется слеш, то в начале строки ставится символ @. Если имя сервера базы данных отличается, то соответственно его и надо использовать.
  • Initial Catalog : указывает на название базы данных на сервере
  • Integrated Security : устанавливает проверку подлинности

Жесткое кодирование строки подключения (то есть ее определение в коде приложения), как правило, редко используется. Гораздо более гибкий путь представляет определение ее в специальных конфигурационных файлах приложения. В проектах десктопных приложений это файл App.config , а в веб-приложениях это в основном файл Web.config . Хотя приложение также может использовать другие способы определения конфигурации.

В нашем случае, так как мы создали проект консольного приложения, то у нас в проекте должен быть файл App.config, который на данный момент имеет следующее определение:

Изменим его, добавив определение строки подключения:

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

Каждая строка подключения имеет название, определяемое с помощью атрибута name . В данном случае строка подключения называется «DefaultConnection». Название может быть произвольное.

Атрибут connectionString собственно хранит строку подключения, то есть весь тот текст, который мы выше определяли в методе Main. И третий атрибут providerName задает пространство имен провайдера данных. Так как мы будем подключаться к базе данных MS SQL Server, то соответственно мы будем использовать провайдер для SQL Server, функциональность которого заключена в пространстве имен System.Data.SqlClient.

Теперь получим эту строку подключения в приложении:

using System; using System.Configuration; namespace AdoNetConsoleApp < class Program < static void Main(string[] args) < //string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; // получаем строку подключения string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; Console.WriteLine(connectionString); Console.Read(); >> >

Прежде всего чтобы работать с конфигурацией приложения, нам надо добавить в проект библиотеку System.Configuration.dll .

С помощью объекта ConfigurationManager.ConnectionStrings[«название_строки_подключения»] мы можем получить строку подключения и использовать ее в приложении.

Параметры строки подключения

  • Application Name : название приложения. Может принимать в качестве значения любую строку. Значение по умолчанию: «.Net SqlClient Data Provide»
  • AttachDBFileName : хранит полный путь к прикрепляемой базе данных
  • Connect Timeout : временной период в секундах, через который ожидается установка подключения. Принимает одно из значений из интервала 0–32767. По умолчанию равно 15. В качестве альтернативного названия параметра может использоваться Connection Timeout
  • Data Source : название экземпляра SQL Servera, с которым будет идти взаимодействие. Это может быть название локального сервера, например, «EUGENEPC/SQLEXPRESS», либо сетевой адрес. В качестве альтернативного названия параметра можно использовать Server , Address , Addr и NetworkAddress
  • Encrypt : устанавливает шифрование SSL при подключении. Может принимать значения true , false , yes и no . По умолчанию значение false
  • Initial Catalog : хранит имя базы данных В качестве альтернативного названия параметра можно использовать Database
  • Integrated Security : задает режим аутентификации. Может принимать значения true , false , yes , no и sspi . По умолчанию значение false В качестве альтернативного названия параметра может использоваться Trusted_Connection
  • Packet Size : размер сетевого пакета в байтах. Может принимать значение, которое кратно 512. По умолчанию равно 8192
  • Persist Security Info : указывает, должна ли конфиденциальная информация передаваться обратно при подключении. Может принимать значения true , false , yes и no . По умолчанию значение false
  • Workstation ID : указывает на рабочую станцию — имя локального компьютера, на котором запущен SQL Server
  • Password : пароль пользователя
  • User ID : логин пользователя

Например,если для подключения необходим логин и пароль, то мы можем их передать в строку подключения через параметры user id и password :

string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;User Password = 1234567fd";";

подставить пароль в строку подключения

Есть приложение WinForms + entity-framework + MS SQL. Если задать всю строку подключения в app.config или если задать всю строку подключения в коде, то все работает.

class UserContext : DbContext < public UserContext() : base("DBConnection") < Database.Connection.ConnectionString = "data source=server;Initial Catalog=test;Persist Security Info=True;User >public DbSet Users < get; set; >> 

Но мне нужно взять строку подключения из app.config (в которой удален пароль) и в коде UserContext подставить пароль. Похожий ответ здесь, но не до конца понял, как подставить. Для чего — чтобы совсем в открытом виде не хранить пароль (разбирать программу никто не будет, но в конфиге в открытом виде тоже храниться не хочется) Дополнения после первого ответа: это строка в app.config

так я выполнил добавление пароля в коде

base.Database.Connection.ConnectionString = string.Format(Database.Connection.ConnectionString, "test", "12345678"); 

такая получилось строка при наведении во время остановки Database.Connection.ConnectionString

 "data source=server;Initial Catalog=test;Persist Security Info=True;User 

Создал пустое приложение. Есть только класс

 public class User < public int Id < get; set; >public string Name < get; set; >public int Age < get; set; >> 
 class UserContext : DbContext < public UserContext() : base("DBConnection") < Database.Connection.ConnectionString = string.Format(Database.Connection.ConnectionString, "test", "12345678"); >public DbSet Users < get; set; >> 

И кнопка, где идет считывание таблицы

 private void button1_Click(object sender, EventArgs e) < using (UserContext db = new UserContext()) < var users = db.Users.ToList(); >> 

Как я понимаю: если в app.config есть строка подключения, то он берет её. Если её нет, то берет из Database.Connection.ConnectionString.

Руководство по тех. обслуживанию

Для работы в режиме однократной синхронизации почтового клиента необходимо, чтобы была включена Windows-авторизация, а также режим имперсонирования:

Требуется для SingleSignOn между серверами «Первой Формы» и/или приложениями (например, «Первой Формой» и Личным кабинетом).

Аутентификация Windows (Active Directory):

Аутентификация Forms (через БД сайта)

Начиная с версии 2.184:

тега authentication быть не должно. См. Настройка аутентификации по токенам.

Редирект для разных доменных имен

Ключ SetCookieForUpperLevelDomain определяет, для какого домена будет задана cookie 1FormaAuth — для домена верхнего уровня (значение true ) либо для полного доменного имени ( false ).

Если ключ не указан в приложении, то по умолчанию считается, что для cookie задается полный домен.

Имеет смысл, если настроены несколько серверов, например, https:// win .myDomain.ru и https:// forms .myDomain.ru.

(все остальные атрибуты у sessionState можно удалить)

Но если в приложении развернут модуль опросов, то

Отдача контейнеров мобильных приложений, а также вызов отчетов FastReport из контекста задачи

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

Если передача ведется по протоколу https:

Если передача ведется по протоколу http, то параметр bindingConfiguration=»secureHttpBinding» не нужен, и строка имеет вид:

Путь к Swagger для тестирования API

В секции можно указать путь к Swagger :

В этом случае обращение к Swagger будет идти по адресу:

https:// адрес-приложения-1Форма /swagger/ui/index/

Если ключ не указан, то адрес будет браться из параметра «Путь к приложению» в Общих настройках приложения.

Сервер заданий по таймеру

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

Тогда при старте приложения будет запускаться механизм джобов.

Если ключ IsJobServer не указан, то задания будут запускаться на сервере с ключем IsMainServer

Задания по удалению неиспользуемых файлов

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

warning_icon

Если тестовый сервер использует рабочие («боевые») файловые провайдеры, то включать данный ключ в web.config на тестовом сервере не рекомендуется. В противном случае файлы, удаленные в тестовом приложении в процессе тестирования, будут удалены также и в рабочем приложении.

Чтобы ограничить время выполнения самого длительного задания ( RemovePreparedFileStorageFilesJob ), можно указать максимальное число файлов, которое оно может обработать за один запуск:

где 300 000 — это максимальное число файлов.

warning_icon

Перед внесением изменений рекомендуется сделать резервную копию всех файловых провайдеров и основной БД.

Создание задач для календарных встреч из Exchange (при включенной синхронизации)

Если календарная встреча создается в «Первой Форме», создается задача в календарной категории и запись в таблице Appointments .

Если календарная встреча создается в Exchange, то в «Первой Форме» создается запись в таблице Appointments , а соответствующая задача в системной календарной категории может создаваться или не создаваться. Будет ли создаваться такая задача, определяет ключ CreateTasksForAppointments – если он имеет значение false , задача в системном календаре не создается, если true — создается. По умолчанию задача в «Первой Форме» создается, но чтобы ускорить синхронизацию, этот режим можно отключить.

Доступность прямой работы с SQL из интерфейса администрирования

В интерфейсе администрирования «Первой Формы» можно включить возможность работы напрямую с SQL. Это определяет ключ disableSQLShell :

Если ключ имеет значение true , то в разделе Интерфейс недоступен пункт Выполнить SQL-запрос , а в редакторе смарт-выражений не отображается кнопка В TSQL . При попытке отредактировать хранимую процедуру будет возникать ошибка 403.

По умолчанию возможность работать с SQL напрямую из интерфейса системы отключена.

Минимальная продолжительность активной сессии в минутах для конкурентной лицензии

После авторизации в системе пользователь попадает в список активных сессий. Время сессии по умолчанию — 1 минута, обновляется и увеличивается с активностью пользователя. После отсутстивия активности в системе конкурентная лицензия высвобождается

В ключе ConcurrentSessionMinLengthInMinutes можно задать время активной сессии:

Если в системе включены конкурентные лицензии, в значении ключа «ConcurrentSessionMinLengthInMinutes» должно быть установлено большее значение, чем значение «AuthTokenExpiresInMinutes» (время жизни access-токена в минутах).

Пример: ConcurrentSessionMinLengthInMinutes = 60, AuthTokenExpiresInMinutes = 50, AuthTokenRefreshStrategy = «SlidingExpiration».

Это необходимо для обновления токена до окончания конкурентной сессии. В таком случае активная конкурентная сессия пользователя гарантированно будет продлена.

В противном случае могут возникать ситуации потери конкурентной сессии во время онлайн-работы пользователя , т.к. она завершилась раньше, чем произошло обновление токена.

Режим аутентификации в ActiveDirectory

Для аутентификации через ActiveDirectory в секции appSettings может быть установлен ключ ActiveDirectoryAuthenticationMode . Возможные значения: DirectoryServices, ldap, PrincipalContext. Значение по умолчанию — ldap

• DirectoryServices — библиотека «system.directoryservices» (только для AD).

• PrincipalContext — «System.DirectoryServices.AccountManagement», более высокоуровневая библиотека (только для AD). Необходимо выбрать значением для ActiveDirectoryAuthenticationMode, , если в лесе ActiveDirectory используются одноименные учетные записи.

• ldap — «Novell.Directory.Ldap» — библиотека, работающая по протоколу LDAP. Работает как с AD, так и для других LDAP-серверов (к примеру, OpenLDAP).

Обновление кэшей через БД

Для задания имени инстанса в секции appSettings необходим ключ ApplicationInstanceId . Его значение (т.е. имя инстанса) должно быть уникальным для каждого инстанса приложения.

Сигнализация для обновления кешей через БД

Ключ MessageBus определяет очередь сообщений. Возможные значения: None, Redis (устаревшее), RebusSQL (по умолчанию). При старте приложения «Первая Форма» соответствующая очередь сообщений Rebus очищается.

Чтобы работала сигнализация для обновления кешей, в секции appSettings ключ UseSqlServerBus должен быть установлен в значение true . Чтобы выключить Rebus, значение UseSqlServerBus должно быть явно задано как false

Быстрая регистрация модулей приложения

Для быстрой регистрации модулей при старте приложения в секции appSettings ключ ExperimentalEnableOptimizedRegistration должен быть установлен в значение true .

warning_icon

По умолчанию выключен, не рекомендуется к использованию

Обновление пользовательского кеша по сигналу от мастер-сервера

Чтобы включить обновление UsersCache по сигналу от мастер сервера, в секции appSettings ключ InvalidateUsersCacheByEvent должен быть установлен в значение true .

warning_icon

По умолчанию выключен, не рекомендуется к использованию

Скачивание файлов одним архивом (групповая обработка в табличном представлении категории)

Эти настройки должны присутствовать начиная с версии 2.232

Запуска Rebus на Postgre

По умолчанию 120 секунд

В зависимости от БД переключается секция defaultConnectionFactory

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *