问题标签 [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.
java - 使用 SafetyNet - 故障侦听器检测 Rooted 设备
我试图在我的登录过程之前检测我的应用程序上的根设备。关于这个答案,我决定使用 SafetyNet。我像这样编辑了这段代码:
当我尝试在模拟器或有根设备上时,我可以看到我的rootCheck
变量变成4
了我用代码编写的。
问题是; 在真实手机中,第一次登录时,我的代码也可以检测到有根设备。但是,如果我关闭应用程序并从后台终止并再次重新打开,我会看到我的代码给出了这个 toast Error: CANCELLED: null
,所以我看到了那个rootCheck
变量5
,这意味着跳转task.addOnFailureListener
到if (e instanceof ApiException)
. 这个问题在有根和正常设备上引起,没关系。
问题是什么?你能帮助我吗 ?
android - 为什么我从 reCaptcha API 得到的响应为空?
我在我的中使用SafetyNet reCAPTCHA API,Activity
我已将 API 调用分解为以下内容:一个Repository
类,一个interface
进行POST
调用的类,一个data class
存储JSON
接收到的响应的类ViewModel
,一个Success
监听器类和Failure
监听器类在我的Activity
.
Repository
:
Interface
拨打POST
电话:
data class
生成者Moshi
:@JsonClass(generateAdapter = true)
ViewModel
:
我的活动方法中的SafetyNet
API 调用onCreate
:
还有Success
监听器类和Failure
监听器类,也在我的Activity
:
现在在Success
侦听器类的onChanged
方法中,当它检查 if recaptchaVerifyResponse
is notnull
和 if recaptchaVerifyResponse.success
istrue
时,它会失败,因为success
, challenge_ts
,apk_package_name
和error_codes
中的变量data class
都设置为null
。
为什么会这样?我做错了什么导致所有字段都设置为null
?
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 - SafetyNet api可以检测parallel/du吗
SafetyNet api 可以检测应用程序是否在并行/双空间中运行?
我还没有测试它,因为我只处于研究阶段。
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
?
我真的很感激对此的任何见解。
谢谢
android - 支持 Google reCAPTCHA 的不同语言
我正在通过 Android Developer 网站上给出的 SafetyNet API 在 android 上使用 reCaptcha API。我的应用程序是多语言应用程序。当我一起更改手机语言设置时,我的 reCaptcha 会以该语言显示。但我想根据应用程序级别的选定区域设置更改语言,而不更改手机语言设置。谷歌文档在这里给出了语言代码。谁能帮我实现这件事。任何帮助或任何建议将不胜感激。
这是我当前的代码。这非常适用于默认电话语言。