我有一个JavaScript网页,可以将MQTT数据发送到运行Mosquitto的服务器。我想隐藏用户的MQTT服务器名称,用户名和密码。我知道使用纯JavaScript是不可能的,因为源在控制台中是可见的。
可以使用Firebase云功能吗?如果是的话怎么样?
答案 0 :(得分:5)
这实际上是Cloud Functions for Firebase documentation中提到的关键功能之一:
保持您的逻辑私密且安全
在许多情况下,开发人员更喜欢控制服务器上的应用程序逻辑,以避免在客户端进行篡改。此外,有时不允许对代码进行逆向工程。云功能与客户完全隔离,因此您可以确保它是私有的,并且始终完全符合您的要求
Firebase的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
Google云环境变量设置为与用于发送电子邮件的Gmail帐户的电子邮件和密码相匹配(如果您的帐户启用了两步验证,则设置应用密码)。用于此用途:firebase functions:config:set gmail.email="myusername@gmail.com" gmail.password="secretpassword"
答案 1 :(得分:0)
我认为甚至API密钥也可以安全地存储在firebase功能上。我已经在an article和Github repo中提出了我的想法,以获取保存firebase配置变量并访问它们的详细方法。看看。