Страницы

Поиск по вопросам

понедельник, 16 декабря 2019 г.

Где и как хранить пароль для SmtpClient?

#c_sharp #smtp #пароль


Планирую из программы отправлять Email по определенным событиям.
Все настройки храню через App.config

Как быть с паролем? Хранить тут же, зашифровав?
Если шифровать с ключом, то ключ где хранить?
    


Ответы

Ответ 1



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

Комментариев нет:

Отправить комментарий