使Firebase数据库极为安全

时间:2018-03-18 20:54:17

标签: firebase firebase-realtime-database cryptography firebase-security firebase-security-rules

我正在尝试为Firebase编写完美的数据库规则,以阻止人们查看彼此的数据。每个用户都有一个保存在数据库中的API密钥,如下所示:

-users:
    -user1:
       -APIKEY: "123asdasasd"

我允许用户只设置他们的API密钥,但他们甚至无法看到自己保存的API密钥。这是我的安全规则:

"users": {
        "$userID": {
            ".write": "auth != null && auth.uid === $userID",
            ".read": "auth != null && auth.token.admin === true " 
        }
    },

因此,即使有人冒充其他用户,他们也无法访问他们的数据,只有他们可以更改数据,这对我的应用来说不是安全问题。

由于我的应用需要超级安全,我还想将加密技术添加到数据库。我希望客户端在保存数据库之前加密API密钥,只有我的服务器才知道解密这些API密钥的密钥。因此,存储在数据库中的密钥将被加密。

有权访问我的整个数据库的黑客是否能够在不知道解密密钥的情况下解密人们的API密钥?

node.js中有哪些加密方法?如果服务器知道私钥而没有其他人知道私钥,那么它只是安全吗?

1 个答案:

答案 0 :(得分:1)

您正在使用术语"键"对于一些不同的事情,遗憾的是很难回答。我会尝试一下,因为要考虑的主要事项是存储用于加密/解密数据的密钥。

  1. 如果将加密/解密密钥存储在与使用它们加密的值相同的数据库中,则任何有权访问该数据库的人都可以解密数据。
  2. 如果将加密/解密密钥存储在除存储加密值之外的其他数据库中,则恶意代理需要访问这两个数据库才能使用密钥解密值。
  3. 当然,这两种方法都容易受到暴力攻击。因此,如果您的加密不够强大,那么加密数据的重点就没那么了。

    建议加密特定库是Stack Overflow btw的偏离主题,但一些针对性很强的Google搜索应该会为你提供很多好的候选者。