Как сохранить комбинацию электронной почты и пароля для программы Windows? - PullRequest
0 голосов
/ 02 января 2019

Я создаю службу Windows, которая должна отправлять электронную почту через определенные промежутки времени различным людям. Я использую учетную запись на сервере, к которому мне нужно безопасно подключиться.

Я нашел эту ссылку: https://nimblegecko.com/how-to-store-login-details-securely-in-application-config-file/ код, который я пытался реализовать, таков:

var configuration = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);

configuration.AppSettings.Settings["username"].Value = EncryptString("new username", configPassword);
configuration.AppSettings.Settings["password"].Value = EncryptString("new password", configPassword);
configuration.Save();

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

любая помощь будет принята с благодарностью?

Ответы [ 3 ]

0 голосов
/ 02 января 2019

Я не предлагаю хранить учетные данные в файле app.config.если вы планируете хранить там, то вы должны хранить с надлежащим шифрованием и дешифрованием.

для вашей информации вы можете сослаться на эту ссылку

Но я бы предложил вам использоватьДиспетчер учетных данных окна для хранения вашего пароля для более подробной информации вы можете использовать их пакет Nuget и их образец

Nuget

Другая ссылка

Github

0 голосов
/ 02 января 2019

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

0 голосов
/ 02 января 2019

Хм ... Не хранить в настройках AppConfig.

Если вы не можете использовать для этого базу данных (для хранения хешированных и зашифрованных строк), получите новый файл для этого, вы даже можете защитить его, чтобытолько учетная запись пользователя службы для его чтения / изменения или сохранения в каталоге профиля службы (в каталоге профиля учетной записи пользователя)

Я бы сделал это с использованием структуры INI-файлов, более легкой для чтения, чем XML, гдекаждая строка содержит что-то вроде

var mergedCredential = string.Format("{0}|{1}", "user@here.com" , "P@ssw0rd");
User1HashedCredentials=EncryptString("new username", mergedCredential);

Я использовал канал, чтобы «объединить» учетные данные, так как вы можете запретить пользователям использовать его для имени пользователя

Когда вы расшифровываете, вы разделяете на «|»

var credentials = DecryptString("new username", User1HashedCredentials);
var splitted = credentials.Split('|');
Username = splitted[0]
Password = splitted[1]

Пример файла ini:

[Пользователи]

Количество = 5

[SendEmailSection]

User1 = dsaa $ # asdasd $ # @ rr ==

User2 = dggggjh7 / sd $ # @ rr ==

User3 = dsaasd "/ $% asdasd $ # @ rr ==

User4 = dsas / & "dasd $ # @ rr ==

User5 = dsAa & s3dasd $ # @ rr ==

Что проще в обслуживании и модификации.Вы даже можете создать свои собственные специализированные разделы для чтения и записи ini, разделенные на "="

...