2017-01-12 55 views
1

密碼我在一個文件中的以下代碼調用knexfile.jsNode.js加載knex - 確保用於登錄到數據庫

module.exports = { 
    development: { 
     client: 'mysql', 
     connection: { 
      database: 'myDatabase', 
      timezone: 'Z', 
      user: 'root', 
      password: 'myPassword', 
      host: '127.0.0.1' 
     }, 
     pool: { 
      min: 2, 
      max: 10 
     }, 
     migrations: { 
      tableName: 'myMigrationTable' 
     } 
    } 
}; 

MYPASSWORD從上面的代碼是純文本的。在我的生產服務器上,我絕對不希望我的代碼中使用明文形式的密碼,而我的應用程序使用該密碼來驗證數據庫。我也不希望它在我的服務器上以明文形式存放在文件中。

在knex或node中有沒有辦法輕鬆地安全地登錄到我的數據庫?我應該只是簡單地加密我的密碼,將它放在服務器上的文件中,並在登錄時使用我的webapp解密它?

+0

你不解密它。您使用單向散列函數。 – Dev

+0

我以爲mysql會在收到密碼時再次哈希我的密碼,然後將這個新的哈希與它存儲在數據庫中的內容進行比較,因此會給出一個驗證錯誤? –

+0

我不明白mysql或knex,但你需要做的是散列用戶輸入並將其與數據庫中的密碼進行比較。有像bcrypt這樣的算法,我也推薦鹽。 – Dev

回答

2

最佳做法是使用環境變量。

knex = require('knex')({ 
    client: 'mysql', 
    connection: process.env.DATABASE_URL 
}) 
+0

爲了讓人們知道連接URL的外觀(作爲環境變量的值):mysql:// username:password @ hostname:port/database –

+0

這只是將問題轉移到其他地方。環境變量從哪裏來? – Thomas

+0

啓動時,容器將從configmap或secret加載env var –

相關問題