[英]How to use environment variables secrets safely in production
我想使用環境變量來安全地保存 pm2 的秘密。
我有一個快速支持的服務器的反向代理,該服務器每次連接執行查詢時都使用帶有密碼的數據庫。
我想從程序中正常訪問它:
procsess.env.my_secret
但我假設在運行時簡單地設置變量,如下所示是不安全的:
MY_SECRET="secret password" pm2/node my_api_server.js
考慮到我使用的是 pm2 並且我希望變量在重啟/崩潰時保持不變,我應該如何設置秘密密碼?
我應該注意到,不同的環境處理和通過 VCN 將代碼傳遞給其他開發人員對我來說不太重要。
在過去的帶有需要連接到數據庫的 Express 后端的 ReactJS 項目中,我在 NPM 上使用了dotenv包。 一旦作為依賴項添加到您的項目中,您將在服務器文件結構的根目錄中創建一個隱藏的 .env 文件。
在該 .env 文件中,您可以創建環境變量。 這些變量需要以 REACT_APP 為前綴,如下所示:
REACT_APP_DBURI=<conn string here>
REACT_APP_MAILGUN_API_KEY=<key string here>
REACT_APP_CAPTCHA_SECRET_KEY=<key string here>
您需要在代碼中按如下方式要求包:
require('dotenv').config();
您可以在 server.js(或其他)代碼中將它們引用為:
process.env.REACT_APP_VARIABLE_NAME
這篇 Medium 文章有一個完整的解釋。
希望這可以幫助!
使用 .env 存儲 API 密鑰或憑據會暴露給生產中的客戶端!
通過 React 文檔 -
警告:不要在你的 React 應用程序中存儲任何秘密(例如私有 API 密鑰)! 環境變量嵌入到構建中,這意味着任何人都可以通過檢查您的應用程序文件來查看它們。
建議將所有 env 密鑰直接存儲在服務器上,服務器應用作客戶端和 API 之間的中間點。 這樣密鑰直接應用在服務器上,不會暴露在前端。 您可以查看有關如何在特定服務器上設置 env 變量的相應文檔。
前端代碼
fetchData = () => {
fetch('/users', { method: 'POST', body: JSON.stringify(data) }
.then(res => res.json())
}
服務器代碼
app.post('/users', (req, res) => {
const API_KEY = process.env.API_KEY;
connection.query(`/apiPath/${API_KEY}`)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.