如何在 firebase NodeJS 上保护客户端 -> 后端
How to secure client -> backend on firebase NodeJS
我正在构建一个托管在 Azure 上的机器人,并将 firebase 用于云功能(即主动消息传递、整理数据等)和云 firestore 数据库。
抱歉,我对安全有点陌生,请随时 link 访问下面的任何有用资源。
在我的机器人代码中,我使用管理 SDK 来访问 firebase。该机器人将没有创建的用户。因此,Firestore 规则会阻止所有人的读写访问权限(因为 admin SDK 仍然具有完全访问权限)。
我有几个关于安全的问题:
- 以这种方式(在机器人端)使用 admin SDK 可以吗?它在 firebase 文档中看起来有点混杂 - 即 https://firebase.googleblog.com/2019/03/firebase-security-rules-admin-sdk-tips.html 提到仅在受信任的环境中使用这些,我认为机器人应该是?
- 其次,我正在尝试将消息从云功能发送到机器人本身。这只是一个没有附加敏感数据的 post,但我想在机器人端验证它以检查它是否来自后端。有没有办法使用 firebase 来做到这一点(即在客户端进行身份验证?)。我还能怎么做?我在阅读有关 JWT 和编码等内容时有点困惑。
谢谢
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 功能上的秘密。您必须确保只有您拥有它。
我正在构建一个托管在 Azure 上的机器人,并将 firebase 用于云功能(即主动消息传递、整理数据等)和云 firestore 数据库。
抱歉,我对安全有点陌生,请随时 link 访问下面的任何有用资源。
在我的机器人代码中,我使用管理 SDK 来访问 firebase。该机器人将没有创建的用户。因此,Firestore 规则会阻止所有人的读写访问权限(因为 admin SDK 仍然具有完全访问权限)。
我有几个关于安全的问题:
- 以这种方式(在机器人端)使用 admin SDK 可以吗?它在 firebase 文档中看起来有点混杂 - 即 https://firebase.googleblog.com/2019/03/firebase-security-rules-admin-sdk-tips.html 提到仅在受信任的环境中使用这些,我认为机器人应该是?
- 其次,我正在尝试将消息从云功能发送到机器人本身。这只是一个没有附加敏感数据的 post,但我想在机器人端验证它以检查它是否来自后端。有没有办法使用 firebase 来做到这一点(即在客户端进行身份验证?)。我还能怎么做?我在阅读有关 JWT 和编码等内容时有点困惑。
谢谢
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 功能上的秘密。您必须确保只有您拥有它。