如何在 firebase NodeJS 上保护客户端 -> 后端

How to secure client -> backend on firebase NodeJS

我正在构建一个托管在 Azure 上的机器人,并将 firebase 用于云功能(即主动消息传递、整理数据等)和云 firestore 数据库。

抱歉,我对安全有点陌生,请随时 link 访问下面的任何有用资源。

在我的机器人代码中,我使用管理 SDK 来访问 firebase。该机器人将没有创建的用户。因此,Firestore 规则会阻止所有人的读写访问权限(因为 admin SDK 仍然具有完全访问权限)。

我有几个关于安全的问题:

谢谢

Is using the admin SDK in this manner (on the bot side) fine?

完全没问题。您那里没有安全规则,但是云功能(或服务器)是安全的环境,因此没有人可以对其进行逆向工程。您应该自己验证传入的数据。如果我假设你使用的是 Discord.JS,那么你可以只读取作者 ID 并授权用户:

const {id} = message.author

// use this ID as an identifier

您不必担心 ID 是假的,因为它没有被任何客户端传递。只需确保您只获取该特定用户的资源。

I am trying to send messages from cloud functions to the bot itself. I would like to authenticate this on the bot side to check it is from the backend

您不需要验证这一点。任何人只有在获得您的机器人令牌后才能通过您的机器人发送消息,这是 server/cloud 功能上的秘密。您必须确保只有您拥有它。