【发布时间】:2018-08-27 09:47:34
【问题描述】:
我正在尝试为 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 中的密码学有哪些好的方法?如果服务器知道私钥而没有其他人知道该私钥,那么它是否只是安全的?
【问题讨论】:
-
请解释黑客“入侵了我的整个数据库”意味着什么。
-
@DougStevenson 查看我的数据库中的任何内容
-
发生这种情况的唯一方法是,如果有人知道您的 Google 帐户密码。到那时,您的项目可能会非常糟糕,我不确定您真的可以做些什么来阻止它们。
-
您是不是说即使有人冒充其他用户,他们也无法访问他们的数据,只有他们可以更改数据,。因此,如果我冒充您,并将您的密钥更改为我知道的东西,那么我就会知道您的密钥,对吗?这听起来不太安全-也许我误解了?此外,在客户端上明文存储 API 密钥也可能是一个安全问题。我建议不要过于依赖“API 密钥”,而是利用具有身份验证的用户帐户来确保安全 - Firebase 身份验证非常适合此目的。
标签: firebase firebase-realtime-database cryptography firebase-security