隐藏/禁用客户端的Firebase功能

时间:2018-12-17 20:00:10

标签: javascript firebase firebase-realtime-database firebase-authentication secret-key

我是Firebase的新手,想知道如何为客户端禁用特定功能以手动将其置于浏览器控制台中。

示例:

function createRoomDB(roomID, name, mode, start, length, aname, opcount, secrettoken) {
  firebase.database().ref('rooms/' + roomID).set({
    name: name,
    mode: mode,
    start: start,
    length: length,
    aname: aname,
    opcount: opcount,
    secrettoken: secrettoken
  });
}

(名字与我的问题无关。)

长话短说:我不希望用户仅使用此命令来创建新数据。我知道您不能在前端隐藏代码,但是禁用后门的最简单,最有效的方法是什么?

我打算将此应用程序托管在GitHub页面上。

1 个答案:

答案 0 :(得分:0)

由于您的代码可以访问数据库,因此无法阻止在同一环境中运行的其他代码也访问数据库。

这意味着您有两个选择:

  1. 确保所有代码(无论是谁编写的)都只能对数据库执行授权操作。
  2. 在其他环境中运行代码。

对于第一个选项,您需要研究Firebase security rules,它会自动在服务器端运行并可以满足大多数要求。

对于第二个选项,您可以例如在Cloud Functions for Firebase中运行代码,然后从您的API中调用它。这使您可以在受信任的环境中隐藏任何秘密值和代码,但这确实意味着您需要确保only authorized users can call that Cloud Function