5

好像我創建需要能夠發送電子郵件偶爾的每個應用程序。例如。狀態電子郵件。對於這個問題,假設我的應用程序是一個備份工具,本地安裝在許多Windows客戶端上,並且每個安裝都需要發送每日狀態郵件。它可以安裝在組織的服務器上或私人計算機上。我的應用程序需要發送電子郵件,在哪裏以及如何存儲SMTP密碼?

我要求用戶向他擁有的電子郵件帳戶(STMP主機,端口,用戶名,密碼,發件人地址)提供憑證。我從Atlassian Jira/Confluence或JFrog Artifactory等應用中複製了這種方法。無論如何,他們在哪裏以及如何存儲SMTP密碼?

我目前的理解是:Salting/Hashing方法不適用於此,因爲我需要能夠檢索明文密碼以實際發送電子郵件。我不想以明文存儲密碼,所以它必須是某種加密/解密方法(對吧?)。

我可以告訴用戶不要使用他的主電子郵件帳戶,而是使用一些輔助帳戶,或者甚至更好的是,設置一個特殊的電子郵件帳戶,以供我的應用程序使用。如果用戶是組織的管理員,則他可能能夠在其交換服務器上設置電子郵件帳戶或配置SMTP中繼。但是,我知道我,我知道我的私人用戶,他們中的一些將只使用自己的主電子郵件帳戶,無論如何,所以我要盡我所能,以保持他們的憑據儘可能安全(我的意思是「遵循最佳做法「)。

Preferrably我想存儲在應用程序的數據庫的加密密碼。

我已經花了幾個小時閱讀了關於stackoverflow的問題,但我看不到共識(就像用戶帳戶登錄憑據一樣)。我覺得這很令人驚訝,因爲我預計基本上每個開發人員遲早都會遇到這個問題。

必須遵循一些最佳實踐,一些確定的方式去做這件事,但我還沒有找到它。

請指點我在網上的資源,解釋如何解決這個問題。如果可能的話,由該領域的一些專家撰寫。

我已經看過一些所謂的問題:

回答

1

這將是很好的,如果你會提供的操作系統和編程語言的更多細節.. 。

但是,這裏有一些一般性的建議:

你必須知道的最重要的事情是:如果你的應用程序能夠解密無需用戶交互(例如用戶密碼或硬件令牌),任何攻擊者都可以做到。您實施的所有措施只會增加獲得此密碼的複雜性。

你當然應該提高標準,儘可能地高。對於Windows,DPAPI將成爲您的朋友。你可以在這裏找到一些關於如何使用它的信息:http://www.c-sharpcorner.com/UploadFile/mosessaur/dpapiprotecteddataclass01052006142332PM/dpapiprotecteddataclass.aspx與C#(我不知道你使用的是哪個環境)。

您也可以實施您自己的配置,並使用帶有存儲在本地密鑰容器中的密鑰的RSA進行加密 - 請參閱http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider%28v=vs.100%29.aspx

也許其他一些人可以幫助你與其他操作系統,但概念將是相同的。

也可以使用某種類型的SSO身份驗證,如Kerberos或NTLM或...,但這意味着郵件服務器上的修改。

相關問題