我可以用Firebase Cloud函数隐藏JavaScript代码吗



我有一个JavaScript网页,它将MQTT数据发送到运行Mosquitto的服务器。我想向用户隐藏MQTT服务器名称、用户名和密码。我知道使用纯JavaScript是不可能的,因为源代码在控制台中是可见的。

是否可以使用Firebase云功能?如果是,怎么做?

这实际上是Firebase文档的云功能中提到的关键功能之一:

保持您的逻辑私有且安全

在许多情况下,开发人员更喜欢控制服务器上的应用程序逻辑,以避免在客户端进行篡改。此外,有时不希望允许对代码进行逆向工程。云功能与客户端完全隔离,因此您可以确保它是私有的,并且总是按照您的意愿进行

Firebase的函数samples repo中有相当多的示例。

例如,向用户发送电子邮件确认的示例需要发送电子邮件的gmail凭据。您永远不会希望将这些凭据嵌入到应用程序代码中,恶意用户很可能会发现并滥用它们。因此,这段代码非常适合在Cloud Functions中运行。从这个样本中读取这些值的代码:

// 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()读取。要了解如何设置这些,请阅读示例的文档:

设置gmail.emailgmail.password谷歌云环境变量,以匹配用于发送电子邮件的Gmail帐户的电子邮件和密码(如果您的帐户启用了两步验证,则为应用程序密码)。用于此用途:

firebase functions:config:set gmail.email="myusername@gmail.com" gmail.password="secretpassword"

我认为即使是API密钥也可以通过firebase函数安全地存储。我在一篇文章和Github repo中表达了我的想法,以了解保存firebase配置变量并访问它们的详细方法。看一看

相关内容

  • 没有找到相关文章

最新更新