远程服务器密码代码安全性问题

3
我正在构建一个Web应用程序,将发送电子邮件进行注册验证。我将使用https://github.com/RGBboy/express-mailer。我想知道在代码中显示电子邮件密码并将其推送到托管应用程序的服务器(Heroku、AWS等)上是否安全。如果不是,我应该使用什么替代方法来“隐藏”密码?

我曾经看到过一个例子,比如在WordPress中,使用一个带有空/默认值的config.sample.php文件,然后将“生产”值保存在config.php文件中,并将该文件添加到忽略文件列表中(.gitignore?我不知道。我从来没有使用过Git)。 - Mike
3个回答

1
通常认为在版本控制下存储明文密码/凭证是不好的做法。因为这可能会导致安全问题。(security issues
通常,这些信息被设置为环境变量。Heroku有一种相当简单的方法来进行此配置。您可以使用他们的Web管理界面或通过命令行设置它们。(pretty straightforward way of doing this configuration
至于其他情况,例如您的开发设置,这可以通过使用 .env 文件来完成,该文件将被加载并将其值暴露给正在运行的代码。由于 [express-mailer] [2] 是一个Node应用程序,我建议使用一些npm包,如{{link3: dotenv }}或{{link4: node-env-file }}自动执行此加载。我个人更喜欢 dotenv ,我觉得它更简单。
你还应该查看this article,了解有关.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>

0

另一种选择是在您的源代码中加密用户凭据,并从源代码中解密它们。


0

不应该在版本控制中存储机密信息。

其中一种替代方案(我个人最喜欢的)是将应用程序的机密信息设置为生产环境中的环境变量。我认为Heroku支持此功能。例如Rails采取的也是这种方式。开发/测试“机密信息”(实际上并非真正有价值的凭据)仍可以存储在您的版本控制系统中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接