2014-11-17 29 views
1

我正在使用Node-Postgres包查詢postgresql/postgis數據庫爲我在Sails.js框架內建立的應用程序。節點/風帆/節點Postgres,存儲連接字符串的最佳實踐

我不知道在哪裏存儲node-postgres包的連接字符串的最佳位置是使它在模型和控制器中可訪問,但仍然安全。

例如,如果我想從一個模型中執行對Postgres數據庫的查詢,我目前做的:

var conString = "postgres://postgres:[email protected]: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 
    }); 

顯然,這是不好的做法/不方便聲明這個ConnectionString的和新的客戶端每次我需要執行查詢。所以,我希望能夠做的是:

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

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

所以我剛剛刪除了conString和新的客戶端聲明。但我不知道應用程序中的哪個位置可以存儲這些內容,以使它們可以訪問且安全。

我的目錄結構遵循標準Sails.js應用程序結構,與此類似:http://runnable.com/UlbJJhdpQyoWAAAK/sails-js-example-project-for-node-js-and-webserver

任何幫助,將不勝感激

回答

2

在sails.js,你可以設置在配置特定環境CONFIGS/ENV /development.js或config/env/production.js。

始終將所有敏感信息存儲在環境變量中,永遠不會存儲在配置文件中。所以,你的配置文件會讀稱爲POSTGRES_CONNECTION一個環境變量,像這樣:

process.env.POSTGRES_CONNECTION 
+0

這是更安全的機制來處理這樣的事情 - 當然。如果得到適當保護,唯一可以訪問該變量的用戶將是可以運行該進程的用戶,並且如果該用戶受到攻擊,那麼您已經被調用。 – Guardius