Wygląda na to, że każda aplikacja, którą utworzę, musi być w stanie wysyłać sporadyczne wiadomości e-mail. Na przykład. e-maile o stanie. Na to pytanie załóżmy, że moja aplikacja jest narzędziem do tworzenia kopii zapasowych, zainstalowanym lokalnie na wielu klientach Windows, a każda instalacja musi wysyłać codzienne wiadomości statusowe. Może być zainstalowany na serwerze organizacji lub na komputerze prywatnym.Moje aplikacje muszą wysyłać e-maile, gdzie i jak mam przechowywać hasło SMTP?
Proszę użytkownika o podanie poświadczeń na konto e-mail, którego jest właścicielem (host STMP, port, nazwa użytkownika, hasło, adres pocztowy). Skopiowałem to podejście z aplikacji takich jak Atlassian Jira/Confluence lub JFrog Artifactory. Gdzie i jak przechowują hasła SMTP?
Moje bieżące zrozumienie jest następujące: Nie stosuje się tutaj metod Solting/Hashing, ponieważ muszę mieć możliwość pobrania hasła w postaci zwykłego tekstu, aby faktycznie wysłać e-maile. Nie chcę przechowywać haseł w zwykłym tekście, więc musi to być jakiś rodzaj szyfrowania/deszyfrowania (prawda?).
Mogę powiedzieć użytkownikowi, aby nie używał swojego głównego konta e-mail, ale aby użyć dodatkowego konta lub, jeszcze lepiej, skonfigurować specjalne konto e-mail, które ma być używane przez moją aplikację. Jeśli użytkownik jest administratorem organizacji, może być w stanie skonfigurować konto e-mail na swoim serwerze wymiany lub skonfigurować przekazywanie SMTP. Ale, znam mnie i znam moich prywatnych użytkowników, niektórzy z nich po prostu wykorzystają swoje główne konto e-mailowe, więc chcę zrobić wszystko, co w mojej mocy, aby ich dane uwierzytelniające były tak bezpieczne, jak to tylko możliwe (mam tu na myśli "przestrzeganie najlepszych praktyk ").
Preferibe chciałbym przechowywać zaszyfrowane hasło w bazie danych aplikacji.
Spędziłem wiele godzin czytając pytania na temat stackoverflow, ale nie widzę zgody (jak w przypadku danych logowania do konta użytkownika). Uważam to za zaskakujące, ponieważ prędzej czy później każdy deweloper napotka na ten problem.
Musi być kilka dobrych praktyk do naśladowania, jakiś ustalony sposób, aby to osiągnąć, ale jeszcze go nie znalazłem.
Proszę wskazać mi zasoby w SO/internecie, które wyjaśniają, jak rozwiązać ten problem. Jeśli to w ogóle możliwe, napisany przez jakiegoś specjalistę w tej dziedzinie.
Niektóre SO pytania Mam spojrzał na: