问题标签 [safetynet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xamarin - 未获得 SafetyNet Api 证明响应
我遇到了谷歌安全网 api 证明响应的问题。即使我向“client.AttestAsync()”方法提供了安全网客户端、nonce 和 apikey,它也不会返回 SafetyNetApiAttestationResponse。下面的代码可能有什么问题?如何获得证明响应以检查 android 设备是在模拟器上运行还是在 xamarin 形式的 root 设备上运行?
java - 使用 SafetyNet - 故障侦听器检测 Rooted 设备
我试图在我的登录过程之前检测我的应用程序上的根设备。关于这个答案,我决定使用 SafetyNet。我像这样编辑了这段代码:
当我尝试在模拟器或有根设备上时,我可以看到我的rootCheck
变量变成4
了我用代码编写的。
问题是; 在真实手机中,第一次登录时,我的代码也可以检测到有根设备。但是,如果我关闭应用程序并从后台终止并再次重新打开,我会看到我的代码给出了这个 toast Error: CANCELLED: null
,所以我看到了那个rootCheck
变量5
,这意味着跳转task.addOnFailureListener
到if (e instanceof ApiException)
. 这个问题在有根和正常设备上引起,没关系。
问题是什么?你能帮助我吗 ?
android - 在遵循所有文档后尝试在我的应用中实施 firebase App Check,但似乎根本不起作用
我用应用程序检查实现了我的 android 应用程序,然后在查看指标选项卡几天后,我可以看到大多数请求来自“未验证:未知来源请求”,所以如果我尝试上传数据,我会在执行后强制执行它“图像/视频”我只是在我的日志猫中得到这个错误:
E/StorageException:服务器已终止上传会话 java.io.IOException:服务器已在 com.google.firebase.storage.UploadTask.serverStateValid 终止上传会话(UploadTask.java:331
但是,如果我手动输入数据,我可以从云存储和存储中读取它,然后我尝试按照以下部分的文档进行操作:“在 Android 上使用 App Check 与调试提供程序”并提供获得的调试令牌从我的日志猫中手动将它放在管理调试令牌下的控制台中,但仍然没有运气我无法将任何内容上传到我的火库存储但是当我在控制台中未强制执行应用程序检查时,我可以正常上传另一件事要提的是什么时候我安装了一个我没有在 gradle 中实现应用程序检查的 apk,它仍然可以访问我的 fire-store 存储,而在控制台中强制执行应用程序检查是否不应该限制对我的存储的访问,这不是应用程序检查背后的全部想法? 任何帮助将不胜感激。
android - 在 Android 中添加 SafetyNet 后无法访问存储和实时数据库
我已经从 Firebase 控制台中的 Appcheck 将 SafetyNet 添加到 Android 应用程序,但是在添加 SafetyNet 后,无法访问实时数据库和存储,我该如何解决这个问题。
firebase-authentication - 从 Firebase 中的 SafetyNet 注销应用程序检查中的应用程序
我已经在 firebase 控制台中的应用程序检查中注册了应用程序,但是现在我必须在安全网中取消注册应用程序或禁用安全网,我该怎么做?
android - Android SafetyNet Attestation nonce 包含部分不可解码数据
以下随机数从我的后端发送到我的设备c6de447db34937a2b5c02bcce5e23335
。
我后端上解码的 JWT 给我返回了这个:WWlXsuCRPESeXW8fRZLJKntRed6P2tGfYzZkZTQ0N2RiMzQ5MzdhMmI1YzAyYmNjZTVlMjMzMzU=
.
所以我使用:let decodedNonce = Buffer.from(decodedTokenObject.nonce,"base64").toString("utf-8")
以纯文本形式获取数据。但是解码后的版本是这样的:YiW���<D�]oE��*{Qyޏ�џc6de447db34937a2b5c02bcce5e23335
.
我现在的问题是,我做错了什么/为什么有不可解码的数据字符串?
我的 16 字节的 nonce 是不是太短了?
我应该将它作为字节列表直接发送给我的客户端,而不是将其存储为十六进制吗?
还是我在这里错过了其他东西?
我也尝试过,hex
而不是utf-8
但无济于事。
android - Android App Check with SafetyNet 是否会自动阻止云功能响应?
我正在Android 上使用 SafetyNet 实施 App Check,并且遇到了一个问题,即尽管我在我的 firebase 项目的 Project settings > App Check 部分中打开了强制执行,但 App Check 强制执行似乎是自动启用的。
例如,当 App Check 捕获来自我的 Android 客户端应用程序的未经验证的云功能请求时,该功能将失败。我希望它能够成功,直到我在项目设置 > 应用检查中强制执行它。有谁知道为什么会这样?
以下是当我的应用发出云功能请求时在 Android Studio 中输出的日志消息:
Error getting App Check token; using placeholder token instead. Error: com.google.firebase.FirebaseException: Error returned from API. code: 403 body: App attestation failed.
android - 如何处理从 Android SafetyNet Attestation 响应中发布大型 JWS?
我正在开发一个 Android 应用程序,它应该将 SafetyNet attest() 响应的 JWSResult 转发到 API 以在服务器端处理它。
当我尝试在 Authorization 标头中发送 JWS 时,我从服务器收到错误,因为它太大了。不幸的是,我不拥有服务器(它是大学的),所以我无法更改允许的最大大小。
我想知道是否有任何方法可以解决这个问题 - 我简要了解了压缩它,但显然 Base64 并不适合它。我是否最好将 API 移动到 Heroku 服务器或我控制的东西?这是更多的工作,但我假设比在客户端处理其中一些要好得多!
Base64 JWS 的长度约为 4873 个字符 - 证书部分特别长。我没有足够的时间来了解这是否是典型的长度!但我假设 Web 服务器设置为相当低的限制,以允许处理大量请求(它是一所大型大学)。
谢谢 :) 如果我应该提供更多信息,请告诉我。
android - 是否可以伪造 SafetyNet Attestation 令牌/x509 证书
我被指示在应用程序中实现API SafetyNet Attestation,并且对验证令牌存在一些担忧。
我们创建了一个端点,它将返回在服务器端生成的随机数,其中将包含稍后要验证的混合信息的哈希值。
我们需要实现令牌验证器以在服务器端运行,它基本上是OfflineVerify.java
google here提供的复制和粘贴。
问题是我不确定是否可以伪造这个令牌/x509 证书。根据 Attestation 文档,我们需要检查证书中的主机名是否应该与attest.android.com匹配,并且我们还可以验证有效负载中存在的其他信息以及 nonce。
我不是密码学/证书方面的专家,但我们不需要私钥来验证证书吗?
是否有人可以创建 x509 证书,将其主机名设置为attest.android.com和其他字段,就像从谷歌返回的一样,并生成一个可以通过的真正令牌OfflineVerify.java
?
我真的很感激对此的任何见解。
谢谢