我可以将 SafetyNet 与 firebase 功能一起使用吗?
Posted
技术标签:
【中文标题】我可以将 SafetyNet 与 firebase 功能一起使用吗?【英文标题】:Can I use SafetyNet with firebase functions? 【发布时间】:2021-08-23 04:17:48 【问题描述】:我正在尝试在我的应用中实现 SafetyNet。我也没有服务器,我正在使用 Firebase Firestore 和 Firebase Functions。
我对 Firebase 函数的了解非常有限。我想知道我是否可以以某种方式使用这些功能来帮助我进行 SafetyNet 认证。如我所见,我应该在云上生成一个 nonce,将此 nonce 发送到应用程序,使用它来证明,然后将其发送回云端以验证完整性是否正确?
但我似乎无法找到有关如何执行此操作的任何地方。谁能指出我正确的方向?
【问题讨论】:
【参考方案1】:是
很抱歉让您感到兴奋,但几周前通过名为Firebase App Check 的新功能可以实现这一点。
使用 App Check,您总是会经历两步流程:
-
在您的应用程序中使用证明提供程序(例如 SafetyNet),以便将有关应用程序的信息附加到它向 Firebase 发出的每个请求中。
然后在某个时间点,当足够多的应用请求附加此信息时,请在 Cloud Functions 中检查应用信息,或启用检查其他受支持的服务之一。
如果您查看enabling App Check enforcement for Cloud Functions 上的文档,您会发现它主要归结为代码中的此检查:
exports.yourCallableFunction = functions.https.onCall((data, context) =>
// context.app will be undefined if the request doesn't include a valid
// App Check token.
if (context.app == undefined)
throw new functions.https.HttpsError(
'failed-precondition',
'The function must be called from an App Check verified app.')
// Your function logic follows.
);
【讨论】:
听起来很有希望!我使用 Firestore 来存储我的用户数据。因此,我需要将所有 Firestore 调用更改为 Function 调用,并在 de 函数中执行我的 Firestore 操作。对吗? 我回答了标题标题:“我可以将 SafetyNet 与 firebase 功能一起使用吗?” Firestore 目前还不支持 App Check,但这可能会改变。因此,您可以决定是否要将 Firestore 包装在 Cloud Functions 中。我个人不会,因为通过身份验证和安全规则,我通常可以很好地保护数据访问。 我知道这不是主要问题。但是你能告诉我如何保护我的 Firestore 数据库免受 root 用户的攻击吗?我实际上有这样的规则:“允许读取,写入:如果 request.auth != null && request.auth.uid == userId;”但不知何故,有人可以根并更改我的 Firestore 数据库中的数据 在这种情况下,什么是 root 用户?也许更重要的是:某人如何成为 root 用户? 对不起,我的意思是用户有根手机。我的主要问题是有根电话的人更改了“点”文本视图,并且由于我使用 textivew 添加服务器点(菜鸟移动),他设法将其点设置得非常高。这就是我首先研究 SafetyNet 和 Firebase Functions 的原因。但也许我走错了方向?也许我只需要创建 3 个变量并验证它们而不是读取文本视图吗?以上是关于我可以将 SafetyNet 与 firebase 功能一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章
从 Firebase 中的 SafetyNet 注销应用程序检查中的应用程序
带有 Firebase UI 的 Firebase 电话身份验证存在 SafetyNet 问题
新研究评估Masimo Patient SafetyNet™对普通病房护理工作流程的效用
使用 PHP 验证来自 Android SafetyNet 的 JWS 响应