【问题标题】:What is the purpose of Firebase AppCheck?Firebase AppCheck 的目的是什么?
【发布时间】:2021-06-12 11:42:40
【问题描述】:

我想提高我的应用程序的安全性,我正在研究 Firebase 应用程序检查服务,该服务可确保向服务器发出的所有请求都来自我的应用程序。 仅在 Firebase 实时数据库中,我设置了以下规则:

"Users": {
      "$userId": {
        ".read": "auth != null && $userId === auth.uid",
          ".write": "auth != null && $userId === auth.uid", 
      }

我认为这可以确保请求来自登录到应用程序的用户。

那么,App Check 做的更多, 该服务是否还阻止越狱或特别植根的设备?因为它在网站上说:请求来自真实的、未篡改的设备。但引言中没有明确提及篡改的含义,即使看起来合乎逻辑我宁愿确定。

那么AppCheck如何保证发送到数据库的数据没有损坏呢?

例如,如果启用数据持久性并且用户关闭应用程序、更改本地存储的查询并重新启动应用程序。然后在我看来,损坏的请求将由 AppCheck 发送和验证,但它会被修改。如果没有,您能否详细说明过程,因为我有点困惑。

【问题讨论】:

    标签: ios swift firebase-realtime-database data-integrity firebase-app-check


    【解决方案1】:

    如果您只有显示的安全规则,并且不使用 App Check,那么任何人都可以从您的应用中获取配置数据,并使用该数据进行 API 调用。因此他们可以调用 API 来创建用户帐户,并以您可能没有想到的方式调用数据库。

    如果您的安全规则捕获了您对数据的所有要求,那么 App Check 确实不会改变恶意用户可以做什么,它只是阻止滥用者的额外层。

    不过,在许多情况下,您的应用程序代码执行的操作与您的安全规则强制执行的操作之间存在(有时是细微的)差异。在这种情况下,滥用的用户可能会运行他们自己的代码并执行与您的代码不同的操作。

    例如,您的安全规则不会强制规定可以写入什么数据。因此,辱骂用户可以:

    • 不要在用户配置文件中写入您的代码所期望的数据。
    • 在用户配置文件中写入您的代码未预料到的完全不同的数据。
    • 将更多数据写入配置文件,然后为您的项目收取费用。

    虽然您可以(并且应该)将围绕数据格式和数据大小的所有此类要求编码到您的安全规则中,但启用 App Check 是一种已经阻止许多恶意用户的快速方法。

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

    【讨论】:

    • 感谢您的回复。还有一些我不明白的事情,在我的规则的当前状态下并且没有 AppCheck 用户无法调用 API 来创建用户帐户。因为如果他这样做了,而不是在应用程序上,那么安全规则的 Auth 对象将是 NULL 对吗?
    • 这就是为什么我不明白 AppCheck 的用处,在这里我看不出这项服务会给我的规则带来什么。除非它还可以防止特别植根的越狱设备拨打电话。我想知道 AppCheck 允许我将哪些内容视为欺诈企图。
    • 为什么您认为用户无法在您的应用之外创建帐户?例如。是什么让他们无法从他们编写的一段 JavaScript 代码中调用 API?如果他们随后访问数据库,auth 对象将被填充 - 因为他们确实已登录到 Firebase 并且(没有 App Check)没有办法区分来​​自您的 Swift 代码的调用和来自 JavaScript 代码的调用不是你写的。
    • 好吧,我开始明白了。如果我错了,请告诉我,用户使用我的数据库信息文件创建第三方脚本,使用适当的方法对 FirebaseAuthentication 进行身份验证,但都在我的应用程序之外。然后他可以在他的字段中写任何他想要的,因为他确实已经注册了身份验证。
    • 这绝对是一个有趣的话题,但是这里的 cmets 很难完全讨论。如果您认为自己找到了滥用媒介,我建议您试一试。如果您确实可以绕过安全措施,请按此处所述报告:google.com/about/appsecurity
    【解决方案2】:

    除了puf 的回答,请查看 WWDC 谈话Mitigate fraud with App Attest and DeviceCheck。 Firebase App Check 为 App Attest 提供服务器。

    【讨论】:

    • 谢谢,很有趣!
    【解决方案3】:

    转到 Apple 证书、标识符和配置文件: 选择您的密钥上传火力库并进行检查: 访问 DeviceCheck 和 AppAttest API 以获取您关联的数据 enter image description here

    【讨论】:

      猜你喜欢
      • 2022-08-15
      • 1970-01-01
      • 2022-01-01
      • 2019-02-07
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 2022-11-05
      • 1970-01-01
      相关资源
      最近更新 更多