iT邦幫忙

0

nodejs專案如何安全儲存資料庫連線字串

  • 分享至 

  • xImage

我使用nodejs開發web應用程式,並用一個json檔來存放資料庫連線的資訊讓程式使用,如下:

mysql: {
  host: 'localhost', 
  user: 'mary',
  password: 'xxxxxxxxxx',
  database: 'mydb',
  port: '3306'
}

請問password的部份建議用何種方式處理比較好? 以及建議使用哪一種加密演算法? 謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
Ray
iT邦大神 1 級 ‧ 2023-06-20 10:13:10

密鑰不可寫在靜態檔案中, 必須存放到 Vault (保管箱) 內, 需要使用的時候, 由程式透過 API 呼叫 Vault, 把密鑰讀回來使用 (使用期間不可儲存到本機內)

常見的 Vault 保管箱工具有:
https://ithelp.ithome.com.tw/articles/10242542
Vault 本身就有加密功能, 你可以信任他的加密, 或者自己再加一道.

而且 Vault 最好放在私有網路內, 或用防火牆限制來源, 避免 API 被外界隨意讀取.

0
joey21
iT邦新手 3 級 ‧ 2023-06-20 11:54:31

可以將密碼存儲在操作系統的環境變數中,然後在應用程式中從環境變數讀取。首先在專案根目錄下創建.env檔,裡面放環境變數,然後在程式中使用process.env來存取這些值。
這樣可以將密碼與程式碼分離,避免在版本控制或共享程式碼時洩漏密碼。

另外加密演算法的話,就取決於你的需求和安全標準,可以使用SHA-256或bcrypt。這些演算法都是單向加密的,無法解密原始密碼只能進行比對。

WILL.I.AM iT邦新手 3 級 ‧ 2023-06-20 14:21:43 檢舉

如果把登入資料庫的密碼使用SHA-256或bcrypt變成hash,就樣就無法還原成原本的密碼,也就不能登入資料庫了...

joey21 iT邦新手 3 級 ‧ 2023-06-20 15:47:11 檢舉

抱歉,我一時腦抽...以為兩個問題是分開的/images/emoticon/emoticon16.gif
資料庫密碼可以用AES對稱密鑰演算法和一個金鑰來加密和解密,以便能夠在需要時解密並與資料庫進行驗證。

我要發表回答

立即登入回答