Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Организация шифрования строки подключения  [new]
newbie876454
Member

Откуда:
Сообщений: 36
Как обычно организуется безопасное хранение строки подключения к базе для приложения winforms?
юзеры с разных компов запускают свою локальную копию приложения, делают некую работу с базой
конфиг файл с логином-паролем sql-аутентификации должен храниться на каждом их компе, в шифрованном виде

технически понятно: в дот нете есть метод Шифровать-расшифровать, уже из коробки
меня интересует общий алгоритм в своем приложении, как организовать всю вот эту кухню по уму:
1. как первоначально должен задаваться юзер и пароль к базе при первой установке приложения?
2. что если имя юзера и пароль впоследствии изменятся, и придется их менять в строке подключения и заново шифровать? надо придумывать механизм сброса текущего пароля? как тогда сделать, чтоыб его не сбросил злоумышленник? или это по барабану и надо защитить только сам пароль и все?
3. насколько безопасно сделать перенос конфига с логином-паролем на другой комп, чтобы на каждом компе снова не задавать подключение? machine level key тогда отпадает?

может вы знаете какие-то "широко известные в узких кругах" мануалы на эту тему, чтобы не придумывать велосипед?

Сообщение было отредактировано: 7 апр 21, 10:55
7 апр 21, 11:02    [22305305]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 4149
имхо, но если пароль это пользовательская настройка. то есть пользователь запускает программу и вводит пароль, который необходимо запомнить, то проще всего использовать "Безопасное хранилище Windows". Пароли будут сохраняться в "Диспетчере учётных данных" консоли управления.
если это параметры конфигурационного файла программы, то любые танцы с бубном, это пустое сотрясание воздуха и всё это обратимо даже для школьника. Лучший способ, при таком раскладе, не хранить пароль вообще, а использовать аутентификацию windows от текущего пользователя
7 апр 21, 13:26    [22305385]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6149
1. Не использовать подключение к БД с аутентификацией по паролю.
2. Использовать трёхзвенку.
7 апр 21, 17:04    [22305552]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
newbie876454
Member

Откуда:
Сообщений: 36
windows-аутентификацию мне запретили: говорят что хотят контролировать подключение приложения к бд через одну учетку, а не через множество юзеров.
наверно придется делать что-то "на отвались", с якобы подобием защиты.
7 апр 21, 17:42    [22305575]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 4149
не надо ничего городить своего, это только сделает всё еще хуже. секция connectionString может быть зашифрованной. Этого вполне достаточно, для безопасности. Суть такой защиты в том, что украсть сам файл конфига не расшифровав его заранее, невозможно. А для дешифрования надо права админа. Для чтения вроде тоже, но это не точно.
7 апр 21, 22:50    [22305718]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
hVostt
Member

Откуда:
Сообщений: 19134
мы ничего не шифруем. параметры просто подставляются в конфиг приложения при деплое.
7 апр 21, 22:56    [22305720]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22298
hVostt
мы ничего не шифруем. параметры просто подставляются в конфиг приложения при деплое.
winforms же
7 апр 21, 23:18    [22305731]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
hVostt
Member

Откуда:
Сообщений: 19134
Shocker.Pro
hVostt
мы ничего не шифруем. параметры просто подставляются в конфиг приложения при деплое.
winforms же


десктопное приложение должно свои конфиги хранить в AppData. а для хранения кредов есть специальное хранилище в винде, называется Credential Manager, или Диспетчер учётных данных.

вот примерчик нагуглил https://github.com/ilyalozovyy/credentialmanagement
7 апр 21, 23:30    [22305741]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6149
hVostt
десктопное приложение должно свои конфиги хранить в AppData

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

hVostt
а для хранения кредов есть специальное хранилище в винде, называется Credential Manager, или Диспетчер учётных данных

Здесь нюанс в том, что кред может быть записан в это хранилище а) самой программой без участия пользователя - это означает, что кред зашит в какую-то из сборок программы, и, следовательно, может быть вытащен оттуда третьими лицами, что не есть хорошо; б) как результат ввода креда пользователем через интерфейс - но, насколько я понял ТС, пользователь этого пароля не знает, и не должен знать.
Ну, и выше ещё было озвучено требование переноса кредов между компьютерами, что в случае Credential Manager (насколько я помню, там используется DPAPI) проблемно.

newbie876454
windows-аутентификацию мне запретили: говорят что хотят контролировать подключение приложения к бд через одну учетку, а не через множество юзеров.

Это им (админам) просто лень возиться с логинами/юзерами БД на сервере. И как организуется разграничение доступа посредством ролей БД, видимо, они тоже не знают. Конечно, проще на все случаи жизни сделать пользователя с правами dbo (или sa), и трава не расти. Только вот именно контроль работы пользователей в БД от этого становится не проще, а сложнее.
Ну да б-г с ними. В данном случае самый лучший вариант - трёхзвенка. WCF, gRPC, итд.
8 апр 21, 06:58    [22305771]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2505
>newbie876454, вчера, 11:02 [22305305]
>...безопасное хранение строки подключения к базе для приложения...
<
Расмотри как вариант
Решение почти аналогичного вопроса - для MSSQL и PostgreSQL.
8 апр 21, 11:43    [22305871]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 4149
ВМоисеев,

ваша дипломная работа?
8 апр 21, 14:37    [22305985]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2505
>Roman Mejtes, сегодня, 14:37 [22305985]
>ваша дипломная работа?
<
Нет. Часть построения этого.
8 апр 21, 19:26    [22306150]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
vikkiv
Member

Откуда: EU
Сообщений: 2932
упс, перечитал повнимательней и дошло что ниже не стоит предлагатъ

Например в вот это:
System.Security.Cryptography
Microsoft.IdentityModel
оборачивается вот это
System.Convert ... base64 ... System.Text.Encoding
сертификаты там, ключи шифрования, алгоритмы и пр.


Сообщение было отредактировано: 8 апр 21, 23:13
8 апр 21, 23:16    [22306222]     Ответить | Цитировать Сообщить модератору
 Re: Организация шифрования строки подключения  [new]
hVostt
Member

Откуда:
Сообщений: 19134
ВМоисеев
Решение почти аналогичного вопроса - для MSSQL и PostgreSQL.


Нет там никакого решения.
9 апр 21, 10:23    [22306314]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить