я создал настольное приложение в C#/WPF, который подключается к экземпляру SQL Server 2008 с помощью постоянной строки соединения, указанной в коде следующим образом (для целей тестирования):Строки подключения для настольного приложения
private string GetConnectionString()
{
//test
return "Data Source=[server IP]; Initial Catalog=[database name]; User ID=[user ID]; Password=[smart password];";
}
Приложение будет использоваться различными пользователями и будет развернуто через ClickOnce, ZIP-архив или пользовательский установщик. Он также имеет разделенные пользовательские функции входа в систему, запрашивая имя пользователя и пароль для доступа к приложениям.
Какова наилучшая практика для хранения сведений о строках подключения для моего настольного приложения (IP, база данных, пользователь SQL Server, пароль)? Если строка соединения изменяется ночью, что является лучшим способом ее обновления, не заставляя пользователей обновляться до последней версии моего приложения? Пользователи не должны видеть/перехватывать/декомпилировать строку подключения, поэтому я предполагаю, что я должен использовать какое-то шифрование. У вас есть какие-либо предложения для моего запроса?
Если соединение изменчиво, тогда будет указано где-то центральное (я предполагаю, что это находится в одной локальной сети компании), например 'NETLOGON'. Что касается предотвращения чтения пользователями - тратите больше времени на работу с функциями, ценными для пользователей, а не на тщетные усилия, такие как это. Если программа, работающая под учетной записью пользователя, может получить доступ к этой информации, тогда пользователь сможет. –
Должны ли пользователи проходить аутентификацию для использования приложения? Я обдумываю наличие «незащищенного» подключения к базе данных, которое поддерживает аутентификацию пользователя и возвращает информацию о соединении, необходимую для выполнения дополнительных функций. Функция проверки подлинности может иметь встроенную задержку времени, если вы обеспокоены тем, что злоумышленник обнаружил соединение и попробовал пары имени пользователя и пароля, а также обычный счетчик сбоев и блокировку учетной записи. – HABO
@Damien_The_Unbeliever: Я рассматриваю этот вопрос как проблему безопасности, о которой я должен заботиться, оценивая все возможности. Я ищу лучшую практику, а не идеальный 100% -ный безопасный способ сделать это :) Вы правы, работа над полезными функциями является приоритетом, но давайте просто не будем игнорировать мелкие детали. –