问题标签 [safetynet-api]

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.

0 投票
0 回答
196 浏览

java - 使用 SafetyNet - 故障侦听器检测 Rooted 设备

我试图在我的登录过程之前检测我的应用程序上的根设备。关于这个答案,我决定使用 SafetyNet。我像这样编辑了这段代码:

当我尝试在模拟器或有根设备上时,我可以看到我的rootCheck变量变成4了我用代码编写的。

问题是; 在真实手机中,第一次登录时,我的代码也可以检测到有根设备。但是,如果我关闭应用程序并从后台终止并再次重新打开,我会看到我的代码给出了这个 toast Error: CANCELLED: null,所以我看到了那个rootCheck变量5,这意味着跳转task.addOnFailureListenerif (e instanceof ApiException). 这个问题在有根和正常设备上引起,没关系。

问题是什么?你能帮助我吗 ?

0 投票
0 回答
32 浏览

android - 为什么我从 reCaptcha API 得到的响应为空?

我在我的中使用SafetyNet reCAPTCHA APIActivity我已将 API 调用分解为以下内容:一个Repository类,一个interface进行POST调用的类,一个data class存储JSON接收到的响应的类ViewModel,一个Success监听器类和Failure监听器类在我的Activity.

Repository

Interface拨打POST电话:

data class生成者Moshi:@JsonClass(generateAdapter = true)

ViewModel

我的活动方法中的SafetyNetAPI 调用onCreate

还有Success监听器类和Failure监听器类,也在我的Activity

现在在Success侦听器类的onChanged方法中,当它检查 if recaptchaVerifyResponseis notnull和 if recaptchaVerifyResponse.successistrue时,它会失败,因为success, challenge_ts,apk_package_nameerror_codes中的变量data class都设置为null

为什么会这样?我做错了什么导致所有字段都设置为null

0 投票
0 回答
24 浏览

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但无济于事。

0 投票
0 回答
17 浏览

android - SafetyNet api可以检测parallel/du吗

SafetyNet api 可以检测应用程序是否在并行/双空间中运行?

我还没有测试它,因为我只处于研究阶段。

0 投票
0 回答
19 浏览

android - 如何处理从 Android SafetyNet Attestation 响应中发布大型 JWS?

我正在开发一个 Android 应用程序,它应该将 SafetyNet attest() 响应的 JWSResult 转发到 API 以在服务器端处理它。

当我尝试在 Authorization 标头中发送 JWS 时,我从服务器收到错误,因为它太大了。不幸的是,我不拥有服务器(它是大学的),所以我无法更改允许的最大大小。

我想知道是否有任何方法可以解决这个问题 - 我简要了解了压缩它,但显然 Base64 并不适合它。我是否最好将 API 移动到 Heroku 服务器或我控制的东西?这是更多的工作,但我假设比在客户端处理其中一些要好得多!

Base64 JWS 的长度约为 4873 个字符 - 证书部分特别长。我没有足够的时间来了解这是否是典型的长度!但我假设 Web 服务器设置为相当低的限制,以允许处理大量请求(它是一所大型大学)。

谢谢 :) 如果我应该提供更多信息,请告诉我。

0 投票
0 回答
36 浏览

android - 是否可以伪造 SafetyNet Attestation 令牌/x509 证书

我被指示在应用程序中实现API SafetyNet Attestation,并且对验证令牌存在一些担忧。

我们创建了一个端点,它将返回在服务器端生成的随机数,其中将包含稍后要验证的混合信息的哈希值。

我们需要实现令牌验证器以在服务器端运行,它基本上是OfflineVerify.javagoogle here提供的复制和粘贴。

问题是我不确定是否可以伪造这个令牌/x509 证书。根据 Attestation 文档,我们需要检查证书中的主机名是否应该与attest.android.com匹配,并且我们还可以验证有效负载中存在的其他信息以及 nonce。

我不是密码学/证书方面的专家,但我们不需要私钥来验证证书吗?

是否有人可以创建 x509 证书,将其主机名设置为attest.android.com和其他字段,就像从谷歌返回的一样,并生成一个可以通过的真正令牌OfflineVerify.java

我真的很感激对此的任何见解。

谢谢

0 投票
0 回答
47 浏览

android - 支持 Google reCAPTCHA 的不同语言

我正在通过 Android Developer 网站上给出的 SafetyNet API 在 android 上使用 reCaptcha API。我的应用程序是多语言应用程序。当我一起更改手机语言设置时,我的 reCaptcha 会以该语言显示。但我想根据应用程序级别的选定区域设置更改语言,而不更改手机语言设置。谷歌文档在这里给出了语言代码。谁能帮我实现这件事。任何帮助或任何建议将不胜感激。

这是我当前的代码。这非常适用于默认电话语言。