我有一個JavaScript網頁,可以將MQTT數據發送到運行Mosquitto的服務器。我想隱藏用戶的MQTT服務器名稱,用戶名和密碼。我知道這是不可能的,因爲源代碼在控制檯中是可見的。我可以使用Firebase雲端功能隱藏JavaScript代碼嗎?
是否可以使用Firebase雲功能執行此操作?如果是的話,怎麼樣?
我有一個JavaScript網頁,可以將MQTT數據發送到運行Mosquitto的服務器。我想隱藏用戶的MQTT服務器名稱,用戶名和密碼。我知道這是不可能的,因爲源代碼在控制檯中是可見的。我可以使用Firebase雲端功能隱藏JavaScript代碼嗎?
是否可以使用Firebase雲功能執行此操作?如果是的話,怎麼樣?
這其實是在Cloud Functions for Firebase documentation提到的關鍵功能之一:
保持您的邏輯私密性和安全
在許多情況下,開發商更希望控制服務器上的應用程序邏輯避免在客戶端篡改。另外,有時不允許該代碼被反向設計。雲功能從客戶端完全絕緣,所以你可以肯定它是私有的,總是正好你想要做什麼
有在火力地堡的functions-samples repo頗有些樣品。
例如,向用戶發送電子郵件確認的樣本需要用於發送電子郵件的gmail憑據。您永遠不希望將這些憑據嵌入應用程序代碼中,惡意用戶可能會發現它們並濫用它們。所以這段代碼是在雲端函數中運行的好選擇。該code that reads these values從這個樣本:
// Configure the email transport using the default SMTP transport and a GMail account. // For other types of transports such as Sendgrid see https://nodemailer.com/transports/ // TODO: Configure the `gmail.email` and `gmail.password` Google Cloud environment variables. const gmailEmail = encodeURIComponent(functions.config().gmail.email); const gmailPassword = encodeURIComponent(functions.config().gmail.password); const mailTransport = nodemailer.createTransport( `smtps://${gmailEmail}:${gmailPassword}@smtp.gmail.com`);
您可以硬編碼的電子郵件地址和密碼,因爲只有你的項目開發人員將能夠看到它。但在這種情況下,示例會更好,並保留憑藉functions.config()
讀取的服務器端配置的憑據。要了解如何設置這些,讀documentation for the sample:
設置
gmail.email
和gmail.password
谷歌雲環境變量,如果你的賬戶有2匹配用於發送電子郵件的Gmail帳戶的電子郵件地址和密碼(或應用程序的密碼一步驗證啓用)。對於這一點:firebase functions:config:set gmail.email="[email protected]" gmail.password="secretpassword"
我想即使API密鑰可以安全地在火力功能存儲。我已經在an article和Github repo中寫下了我的想法,詳細瞭解如何保存Firebase配置變量並訪問它們。看一看。