可在部署的应用程序的源代码中查看Meteor SMTP凭据

时间:2015-05-08 18:21:13

标签: javascript email meteor

我已经构建了一个应用程序并添加了我的SMTP凭据(在服务器代码块中):

Meteor.startup(function () {
    smtp = {
      username: 'username@emails.com',   
      password: 'lkajflkadjakdlfj',   
      server:   'smtp.emails.com',  
      port: 587
    }

    process.env.MAIL_URL = 'smtp://' + encodeURIComponent(smtp.username) + ':' + encodeURIComponent(smtp.password) + '@' + encodeURIComponent(smtp.server) + ':' + smtp.port;
});

这很有效,发送得很好。但是,只要阅读我部署的应用程序的源代码,任何人都可以使用我的凭据。

我应该在其他地方存储这些凭据吗?还是另一种完全设置它的方法?

2 个答案:

答案 0 :(得分:6)

一般情况下,尽量避免在代码中使用硬编码环境变量,还有其他几种选择。

您可以使用Meteor.settings存储您的私人凭据:

private/settings.json

{
  "MAIL_URL": "smtp://smtp://postmaster%40mg.domain.com:password@smtp.mailgun.org:587"
}

server/config.js

process.env.MAIL_URL = Meteor.settings.MAIL_URL;

不要忘记使用流星设置提供应用程序:

本地开发工作流程:

meteor --settings private/settings.json

部署到Meteor服务器:

meteor deploy myapp.meteor.com --settings private/settings.json

另一个选择是使用mupMeteor Up),它提供一个名为mup.json的配置文件,您可以将您的凭据存储为env变量,这非常方便。

mup.json

"env": {
  "MAIL_URL": "..."
}

最后但并非最不重要的是,如果您使用版本控制,请不要忘记.gitignore您的设置!

.gitignore

private/settings.json
mup.json

答案 1 :(得分:2)

来自Meteor文档(http://docs.meteor.com/#/full/structuringyourapp):

  

客户端上未加载任何名为server的目录。相近   将您的代码包装在if(Meteor.isServer){...}中,但客户端除外   从来没有收到过代码。任何您不想要的敏感代码   服务于客户端,例如包含密码的代码或   身份验证机制,应保存在服务器目录中。