【问题标题】:Node/Sails/Node-Postgres, best practice for storing connection stringNode/Sails/Node-Postgres,存储连接字符串的最佳实践
【发布时间】:2015-01-14 00:58:43
【问题描述】:

我正在使用 Node-Postgres 包查询我在 Sails.js 框架内构建的应用程序的 postgresql/postgis 数据库。

我不知道在哪里存储我的 node-postgres 包的连接字符串的最佳位置是让它在模型和控制器中可访问但仍然安全。

例如,如果我想从模型中对 postgres 数据库执行查询,我目前的做法是:

    var conString = "postgres://postgres:mypass@localhost:5432/myapp_dev";
    var client = new pg.Client(conString);
    client.connect();

    var junk = [];
    client.query('SELECT * FROM junk', function (err, result) {
        // Stuff I do with the query result
    });

显然,每次我需要执行查询时都声明此连接字符串和新客户端是不好的做法/不方便。所以,我想做的是:

client.connect();
var junk = [];

client.query('SELECT * FROM junk', function (err, result) {
    // Stuff I do with the query result
});

所以我刚刚删除了 conString 和 new 客户端声明。但我不知道在我的应用中将这些存储在哪里,以确保它们可访问且安全。

我的目录结构遵循标准的 Sails.js 应用结构,类似这样:http://runnable.com/UlbJJhdpQyoWAAAK/sails-js-example-project-for-node-js-and-webserver

任何帮助将不胜感激

【问题讨论】:

    标签: node.js postgresql database-connection sails.js


    【解决方案1】:

    对于遇到同样问题的任何人,我建议将 Sails 数据库适配器定义存储在 local.js 文件中。

    请参阅此处的解决方案以获取示例:Using local.js to store sails-mysql password

    【讨论】:

      【解决方案2】:

      在sails.js 中,您可以在config/env/development.js 或config/env/production.js 中设置特定于环境的配置。

      始终将所有敏感信息存储在环境变量中,而不是存储在配置文件中。因此,您的配置文件将读取一个名为 POSTGRES_CONNECTION 的环境变量,如下所示:

      process.env.POSTGRES_CONNECTION
      

      【讨论】:

      • 这是处理这类事情的更安全的机制——当然。如果保护得当,唯一可以访问该变量的用户将是可以运行该进程的用户,如果该用户受到威胁,那么您已经被淹没了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 2018-12-18
      • 2017-09-07
      • 2010-10-11
      • 1970-01-01
      • 2014-04-01
      • 2017-12-01
      相关资源
      最近更新 更多