Security 远程服务器代码安全上的密码

Security 远程服务器代码安全上的密码,security,web,Security,Web,我正在建立一个网络应用程序,它将发送电子邮件进行注册验证。我将使用。我想知道在代码中显示电子邮件密码并将其推送到应用程序所在的服务器(Heroku、AWS等)是否安全。如果没有,我应该使用什么替代方法来“隐藏”密码?您不应该在版本控制中存储机密 另一种选择(我个人最喜欢)是将机密设置为生产环境中应用程序的环境变量。我认为Heroku支持这一点。这也是Rails采用的方法。开发/测试“秘密”(实际上不是任何有价值的东西的真实凭证)当然仍然可以存储在VCS中。另一种选择是在源代码中加密用户凭据,然后

我正在建立一个网络应用程序,它将发送电子邮件进行注册验证。我将使用。我想知道在代码中显示电子邮件密码并将其推送到应用程序所在的服务器(Heroku、AWS等)是否安全。如果没有,我应该使用什么替代方法来“隐藏”密码?

您不应该在版本控制中存储机密


另一种选择(我个人最喜欢)是将机密设置为生产环境中应用程序的环境变量。我认为Heroku支持这一点。这也是Rails采用的方法。开发/测试“秘密”(实际上不是任何有价值的东西的真实凭证)当然仍然可以存储在VCS中。

另一种选择是在源代码中加密用户凭据,然后从源代码中解密。

在版本控制下存储明文机密/凭据通常被认为是不好的做法。因为这可能导致

通常,这些类型的信息被设置为环境变量。希罗库有一个朋友。您可以使用他们的web管理员,也可以通过命令行进行设置

至于其他情况,如开发设置,这可以通过使用
.env
文件来完成,这些文件会被加载,并将其值公开给正在运行的代码。由于
[express mailer][2]
是一个节点应用程序,我建议使用一些npm包,比如或自动执行此加载。我个人更喜欢
dotenv
,我觉得它更简单

您还应该查看
.env
文件的使用情况。基本思想是让您的
.gitignore
(或等效文件)忽略您的
.env
文件,从而确保您的机密凭据永远不会引入版本控制中。然后设置一个
.env.sample
文件,向开发人员显示需要在所述
.env
文件中声明哪些数据

例如:

.env

EMAIL=foo@bar.com
PASSWORD=AahUbf796
S3_TOKEN=ASVNS7843NCA87SDVNBRT9
.env.sample

EMAIL=<email to access the account>
PASSWORD=<secret password>
S3_TOKEN=<s3 token for application foobar>
电子邮件=
密码=
S3_令牌=

例如,我在wordpress中看到的一件事是使用具有空/默认值的config.sample.php,然后在config.php中保存“production”值,然后将该文件添加到被忽略的文件列表中(.gitignore?我不知道。我从不使用git。)