Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 我的应用程序需要发送电子邮件,我应该在哪里以及如何存储SMTP密码?_Security_Passwords_Password Protection_Email_Password Encryption - Fatal编程技术网

Security 我的应用程序需要发送电子邮件,我应该在哪里以及如何存储SMTP密码?

Security 我的应用程序需要发送电子邮件,我应该在哪里以及如何存储SMTP密码?,security,passwords,password-protection,email,password-encryption,Security,Passwords,Password Protection,Email,Password Encryption,似乎我创建的每个应用程序都需要能够偶尔发送电子邮件。例如,状态电子邮件。对于这个问题,假设我的应用程序是一个备份工具,本地安装在许多windows客户端上,每次安装都需要发送每日状态邮件。它可以安装在组织的服务器或专用计算机上 我要求用户向其拥有的电子邮件帐户(STMP主机、端口、用户名、密码、发件人地址)提供凭据。我从Atlassian Jira/Confluence或JFrog Artifactory等应用程序中复制了这种方法。他们在哪里以及如何存储SMTP密码 我目前的理解是:盐析/哈希方

似乎我创建的每个应用程序都需要能够偶尔发送电子邮件。例如,状态电子邮件。对于这个问题,假设我的应用程序是一个备份工具,本地安装在许多windows客户端上,每次安装都需要发送每日状态邮件。它可以安装在组织的服务器或专用计算机上

我要求用户向其拥有的电子邮件帐户(STMP主机、端口、用户名、密码、发件人地址)提供凭据。我从Atlassian Jira/Confluence或JFrog Artifactory等应用程序中复制了这种方法。他们在哪里以及如何存储SMTP密码

我目前的理解是:盐析/哈希方法不适用于这里,因为我需要能够检索明文密码来实际发送电子邮件。我不想以明文形式存储密码,所以必须采用某种加密/解密方法(对吗?)

我可以告诉用户不要使用他的主电子邮件帐户,而是使用一些辅助帐户,或者更好的是,设置一个特殊的电子邮件帐户供我的应用程序使用。如果用户是某个组织的管理员,则可以在其exchange服务器上设置电子邮件帐户或配置SMTP中继。但是,我了解我,我也了解我的私人用户,他们中的一些人无论如何只会使用他们的主电子邮件帐户,所以我想尽我所能确保他们的凭据尽可能安全(我的意思是“遵循最佳实践”)

我更愿意将加密密码存储在应用程序的数据库中

我花了好几个小时阅读有关stackoverflow的问题,但我看不到一致意见(就像用户帐户登录凭据一样)。我觉得这很奇怪,因为我预计基本上每个开发人员迟早都会遇到这个问题

一定有一些最佳实践可以遵循,一些既定的方法可以做到这一点,但我还没有找到

请给我指一下SO/网站上解释如何解决这个问题的资源。如果可能,由该领域的专家撰写

我看到的一些问题:


    • 如果您能提供更多关于操作系统和编程语言的详细信息,那就太好了

      但以下是一些一般性建议:

      您必须知道的最重要的一点是:如果您的应用程序能够在无需用户交互的情况下对其进行解密(例如,用户的密码或硬件令牌),则任何攻击者都能够做到这一点。您实施的所有措施只会增加获取此密码的复杂性

      当然,你应该尽可能地把横杆抬高。对于Windows,DPAPI将是您的朋友。您可以在这里找到一些关于如何使用它的信息,例如:使用C#(我不知道您使用的是哪个环境)

      您还可以实现自己的配置,并使用RSA加密配置,并将密钥存储在本地密钥容器中-请参阅

      也许其他人可以帮助你使用其他操作系统,但概念是一样的

      也可以使用某种SSO身份验证,如Kerberos、NTLM或…,但这意味着对邮件服务器进行修改