我可以使用Firebase云功能隐藏JavaScript代码吗?

Vas*_*dis 1 node.js mqtt firebase google-cloud-functions

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

是否可以使用Firebase云功能来实现?如果是的话怎么样?

Fra*_*len 5

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

保持您的逻辑私密和安全

在许多情况下,开发人员更喜欢控制服务器上的应用程序逻辑,以避免在客户端进行篡改.此外,有时不允许对代码进行逆向工程.云功能完全与客户端隔离,因此您可以确定它是私有的,并且始终完全符合您的要求

Firebase的函数中有相当多的样本- 样本回购.

例如,向用户发送电子邮件确认的示例需要gmail凭据才能发送电子邮件.您永远不会希望在应用程序代码中嵌入这些凭据,恶意用户可能会在其中找到并滥用这些凭据.因此,此代码是在云函数中运行的理想选择.从此示例中读取这些值代码:

// 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`);
Run Code Online (Sandbox Code Playgroud)

您可以对电子邮件地址和密码进行硬编码,因为只有项目的开发人员才能看到它.但在这种情况下,示例会更好地执行此操作并将凭据保留在其读取的服务器端配置中functions.config().要了解如何设置这些,请阅读示例文档:

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

firebase functions:config:set gmail.email="myusername@gmail.com" gmail.password="secretpassword"
Run Code Online (Sandbox Code Playgroud)