作者:开心小笨笨猪 | 来源:互联网 | 2023-09-10 05:04
我想提高我的应用程序的安全性,我正在研究FirebaseAppCheck服务,该服务确保向服务器发出的所有请求都来自我的应用程序。仅在Firebase实时数据库中,我设置了以下
我想提高我的应用程序的安全性,我正在研究 Firebase App Check 服务,该服务确保向服务器发出的所有请求都来自我的应用程序。仅在 Firebase 实时数据库中,我设置了以下规则:
"Users": {
"$userId": {
".read": "auth != null && $userId === auth.uid",
".write": "auth != null && $userId === auth.uid",
}
我认为这可以确保请求来自登录到应用程序的用户。
那么 App Check 做的更多,该服务是否也阻止越狱或特别植根的设备?因为它在网站上说:请求来自真实的、未被篡改的设备。但是介绍中没有任何内容明确提到篡改意味着什么,即使我宁愿确定这似乎合乎逻辑。
那么 AppCheck 如何确保发送到数据库的数据没有损坏呢?
例如,如果启用数据持久性并且用户关闭应用程序,则更改本地存储的查询并重新启动应用程序。然后在我看来,损坏的请求将由 AppCheck 发送和验证,但它会被修改。如果没有,你能不能详细说明一下这个过程,因为我有点困惑。
回答
如果您只有显示的安全规则,并且不使用 App Check,则任何人都可以从您的应用中获取配置数据,并使用该数据进行 API 调用。因此他们可以调用 API 来创建用户帐户,并以您可能无法想象的方式调用数据库。
如果您的安全规则捕获了您对数据的所有要求,那么 App Check 确实不会改变恶意用户可以做什么,它只是阻止滥用者的额外层。
但是,在许多情况下,您的应用程序代码所做的与您的安全规则执行的内容之间存在(有时是细微的)差异。在这种情况下,滥用用户可能会运行他们自己的代码并执行与您的代码不同的操作。
例如,您的安全规则不执行任何东西什么可以写入数据。因此,滥用用户可以:
- 不要在用户配置文件中写入您的代码期望的数据。
- 在您的代码不期望的用户配置文件中写入完全不同的数据。
- 将更多数据写入配置文件,然后您的项目将为此付费。
虽然您可以(并且应该)将所有这些关于数据格式和数据大小的要求编码到您的安全规则中,但启用 App Check 是一种快速阻止许多恶意用户的方法。
在使用 App Check 和安全规则之间,您既可以得到广泛的保护,又可以细粒度地控制谁可以访问数据以及他们可以对数据做什么。
That's indeed one abuse scenario. . If my answer was useful, click the upvote button (▲) to the left of it. If it answered your question, click the checkmark (✓) to accept it. That way others know that you've been (sufficiently) helped. Also see [What should I do when someone answers my question?](https://stackoverflow.com/help/someone-answers)