Планирую из программы отправлять Email по определенным событиям. Все настройки храню через App.config
Как быть с паролем? Хранить тут же, зашифровав? Если шифровать с ключом, то ключ где хранить?
Я не знаю простых способов порешать эту проблему.
До тех пор, пока мы работаем в энтерпрайз-приложениях (читай: есть application сервер) мы всегда может договариваться о том, чтобы хранить пароль в app.config ("всё равно доступ на сервер открыт только тем, кому надо") чуть ли не в явном виде.
Ещё лучше, когда есть домен и мы можем использовать возможность не указывать пароль вообще. Т.е. для SQL соединений мы можем указать Integrated Security=True
в connection string, для почты мы можем обращаться к корпоративному Exchange Server'у, который знает, что служба запущена от такой-то доменной учётки.
Как только мы уходим в создание приложений, рассчитанных на b2c сегмент, т.е. продаём домашнему пользователю ПО, то вся схема начинает рассыпаться как карточный домик. И вместо почтовика приходится коннектиться к какому-то бесплатному gmail/rambler/mailru/yandex и т.п. сервису, и SQL уже полноценно не подымешь...
Я не знаю, возможно ли вообще общее решение, когда у вас всё для расшифровки находится в одном месте. Вон, даже настройки ODBC винда до сих пор хранит в явном виде в реестре. :(
Единственное что мне приходит в голову: шифровать данные пользователя паролем пользователя (он же нигде не хранится), однако это решение с побочками (забыл пароль - потерял настройки, нельзя зашить пароль в дистрибутив)
Какие-то костыли встречал (например), но с такой кучей побочек (только веб-конфиг, только коннекшн стринг и т.п.), что пользоваться неудобно. На дворе шёл уже 2019 год... :(
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я начинаю изучать C# и хочу попрактиковаться с векторамиЯ сделал WPF приложение, в котором на ПКМ создаются круги, а если нажать и удерживать...