我一直在关注express,node和mongo的教程。 我在服务器端的配置文件中:
production:{
db:'mongodb://MYUSERNAME:MYPASSWORD@ds033307.mongolab.com:33307/dbname',
rootPath:rootPath,
port:process.env.PORT||80
}
所以,我在服务器端javascript文件中以明文形式提供了我的用户名和密码。我应该担心这个吗?如果是的话,我可以把它放在哪里呢?
感谢。
编辑:我回去看看mongolab和heroku(托管我的网站)docs。
我发现:“ MongoLab附加组件为您的Heroku环境提供了一个配置变量:MONGOLAB_URI ”,因此我能够将MONGOLAB_URI env var放入我的配置并移动密码超出源代码。
关于相同的数据中心,我是否正确地假设heroku不会在他们的数据中心托管我的mongolab数据库,而是会调用云服务mongo数据库?如果我想坚持使用mongolab和heroku,我能做的就不多了吗?
答案 0 :(得分:1)
我知道这个问题很老但是根据Heroku的文档,他们目前使用2个数据中心(https://devcenter.heroku.com/articles/regions#data-center-locations)。
他们的美国服务器是'amazon-web-services :: us-east-1',他们的欧盟替代品是'amazon-web-services :: eu-west-1'。
在Mongolab上启动mongo实例时,这两个数据中心都可用,因此您可以选择将您的应用程序和数据库放在同一数据中心,从而提高安全性。
答案 1 :(得分:0)
我认为您应该始终关注将密码存储在源代码文件中。通常,将它保存在单独管理的配置文件中会好得多。这使您可以灵活地将相同的代码与不同的配置文件一起使用,以指向开发或qa数据库。
或许更重要的是 - 您是否在MongoLab托管数据库的同一数据中心托管您的应用程序?如果没有,该用户名和密码以及您的数据将以明文形式遍历互联网。
MongoLab目前不支持SSL(RestAPI除外),因此即使他们建议使用相同的数据中心:
您支持SSL吗?
尚未确定,但我们的路线图将于2014年夏季推出 与此同时,我们强烈建议您运行您的应用程序 同一数据中心中的数据库。如果您有专门的计划,我们也是 强烈建议您为自己配置自定义防火墙规则 (多个)数据库。
Rest API:
每个MongoLab帐户都附带一个可用于访问的REST API 属于该帐户的数据库,集合和文档。 API公开了您在MongoDB中找到的大多数操作 驱动程序,但通过HTTPS将它们作为RESTful接口提供。
我肯定会非常仔细地阅读MongoLab的安全页面: