微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Firebase AppCheck 的目的是什么?

如何解决Firebase AppCheck 的目的是什么?

我想提高应用程序的安全性,我正在研究 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 是一种快速阻止许多恶意用户的方法。

在使用应用检查和安全规则之间,您既可以得到广泛的保护,又可以细粒度地控制谁可以访问数据以及他们可以对数据做什么。

,

除了来自 puf 的回答之外,请查看 WWDC 演讲 Mitigate fraud with App Attest and DeviceCheck。 Firebase App Check 为 App Attest 提供服务器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。