作者:冬天的芦苇2011 | 来源:互联网 | 2023-01-13 08:41
我有一个Javascript网页,可以将MQTT数据发送到运行Mosquitto的服务器.我想隐藏用户的MQTT服务器名称,用户名和密码.我知道使用纯Javascript是不可能的,因为源在控制台中是可见的.
是否可以使用Firebase云功能来实现?如果是的话怎么样?
1> Frank van Pu..:
这实际上是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`);
您可以对电子邮件地址和密码进行硬编码,因为只有项目的开发人员才能看到它.但在这种情况下,示例会更好地执行此操作并将凭据保留在其读取的服务器端配置中functions.config()
.要了解如何设置这些,请阅读示例文档:
设置gmail.email
和gmail.password
Google Cloud环境变量以匹配用于发送电子邮件的Gmail帐户的电子邮件和密码(如果您的帐户启用了两步验证,则设置应用密码).用于此用途:
firebase functions:config:set gmail.email="myusername@gmail.com" gmail.password="secretpassword"