问题标签 [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.

0 投票
0 回答
958 浏览

android - Android SafetyNetClient.Attest(...) 返回 ApiException

尝试在最新的 Play-Services v11.0.1 中使用SafetyNetClient.attest(...)进行证明时,客户端出错并返回 ApiException。

代码片段:

日志输出:

我在这里想念什么?

0 投票
1 回答
2899 浏览

android - 发送安全网兼容性检查请求是否有任何配额限制

安全网文档的参考中提到“SafetyNet Attestation API 密钥的默认请求配额是每天 10,000 个请求。如果您需要额外的容量,请向 SafetyNet API 配额团队发送请求”

我没有使用文档中提到的任何类型的密钥来发出兼容性检查请求。基于上述信息,我有以下查询:

  1. 上述配额限制是用于安全网响应的在线验证吗?正如这里提到的
  2. 我们是否需要任何类型的 API_KEY 通过在开发者控制台等上创建项目来获得安全网响应?我相信 API_KEY 是在线验证安全网响应所必需的,但为了获得安全网响应,我们不需要任何东西,我们只需要使用安全网 API,这就是我目前正在做的事情,它为我提供了有效 android 的成功兼容性检查响应设备。
  3. 那么安全网兼容性检查API(不是验证API)如何进行客户端识别?它是特定于 android 应用程序还是特定于用户的 google 帐户?
  4. 如果安全网兼容性检查 API 是特定于应用程序的,那么是否有任何配额?例如,如果有 100000 台 Android 设备安装了我的应用程序,并且应用程序使用安全网兼容性检查 API,每天有 1000000 次兼容性检查请求,它会起作用吗?我需要别的东西吗?
  5. 如果安全网兼容性检查 API 是特定于用户的 google 帐户(gmail),那么是否有任何配额?
  6. 如果我使用安全网 API 的应用程序的用户没有谷歌帐户(gmail id)怎么办?它可以在他的安卓手机上运行吗?
0 投票
1 回答
987 浏览

android - 测试 SafetyNetClient.listHarmfulApps()

我正在编写一个 Android 应用程序,如果他/她的设备上安装了任何 PHA(潜在有害应用程序),它将向用户报告(以及其他 SafetyNet 数据)。

为此,我正在使用SafetyNet Verify Apps API。我的电话isVerifyAppsEnabled()工作正常,但拨打电话listHarmfulApps()一无所获。

两者在语法上是相同的,所以我相信我的代码是可以的,但无论如何:

代码实际上并不多:它基本上是Google 页面上的代码,适用于使用 GMS 11.0.2 中的新 API 调用(上述页面上的示例都使用不推荐使用的调用),但它不适用于全部。没有一个听众被触发。

要么我搞砸了,要么我正在测试的设备上根本没有任何 PHA。

因此我的3个问题:

1)我的代码正确吗?

2) 是否有任何我可以安装的 PHA 会被列入黑名单,出现在名单上,但实际上并没有害处?(如用于测试杀毒软件的EICAR病毒)。

3)最后,如果(1)和(2)不可能,我可以安装任何 PHA 吗?在这种情况下,我将使用受控的、一次性的环境,例如我将在之后擦除的有根模拟器。

先感谢您。

0 投票
0 回答
233 浏览

android - 使用 Volley 将 JWS 转换为 JSON 抛出 400 响应代码错误

我正在尝试SafetyNet通过谷歌使用 API。我已成功向 google 服务器发送请求并获得 JWS 输出。为了将 JWS 解析为 JSON,我将 JWS 令牌发送到谷歌给出的 URL。但由于某种原因,它显示出一些错误。

文档:这里

我的排球代码:

错误消息说 com.android.volley.serverError

日志说BasicNetwork.performRequest: Unexpected response code 400 for https://www.googleapis.com/androidcheck/v1/attestations/verify?key=MyKey

我尝试使用Postman发送相同的请求,但它给了我

作为回应。我相信我已经在我的凌空代码中正确设置了所有标题和内容。这有什么错误吗?

编辑 :

我更新了我的代码以使用JSONObjectRequest. 当我使用它时,没有 400 错误代码,但它返回的内容与 Postman 查询返回的内容相同。

我从attestationResultusinggetJWSResult()调用中获取签名,然后立即将其作为参数发送给函数。为什么它显示它不是一个有效的签名。

0 投票
1 回答
603 浏览

android - 通过 SafetyNet 验证应用 API 的标准

我创建了一个使用SafetyNet Verify AppsAPI 的应用程序。该应用程序可以正常运行,并且在我测试过的所有设备中,它都说没有发现有害应用程序。我想知道应用程序通过SafetyNet测试的标准是什么。如果我知道我将创建一个应用程序,该应用程序将无法通过测试来验证该功能是否正常工作。我试图通读谷歌的文档,但在这件事上我找不到任何东西。

有没有这样的应用程序?我的应用必须具备哪些功能才能通过SafetyNet测试?

0 投票
2 回答
2074 浏览

android - Android SafetyNet JWT 签名验证

我试图了解 jwt 签名验证的工作原理。

这就是我目前的做法:

我知道签名是通过散列 jwt 的标头和有效负载然后使用 Google 的私钥对其进行签名(加密)来创建的。

我在第 3 步中所做的是获取标头 + 有效负载并使用证书的公钥对其进行解密并验证它是否与签名匹配。(当我说“我”时,我的意思是 lib 做到了)

我的问题是,如果用户设备上有恶意软件并即时修改发送到我的服务器的 JWT,会发生什么?恶意软件会在标头中添加自己的证书(由受信任的 CA 颁发),根据需要修改有效负载并创建签名。

我的服务器端......好吧,我将使用证书中提供的公钥验证签名,它将匹配。

这个对吗?还是我在某个地方感到困惑?因为在那种情况下,它会使这一切流程变得毫无用处,不是吗?如何确保自己 100% 相信 JWT 来自谷歌?

0 投票
1 回答
1178 浏览

android - 我的设备无法通过 SafetNet 证明 API 的原因

我正在使用SafetyNet AttestAPI,并且已经在许多设备上测试了我的应用程序。所有设备都是带有原始引导加载程序的无根设备。到目前为止,他们都通过了 attest api 测试。目前我正在摩托罗拉 Nexus 6 上对其进行测试。它没有植根,并且引导加载程序是 OEM 提供的。但由于某种原因,设备未能ctsProfileMatch通过basicIntegrity检查。

此处给出了一个小表,列出了设备可能失败的原因,但输出 JSON 只有布尔字段,没有关于设备失败原因的数据。

关于如何获取有关我的设备失败原因的详细信息的任何想法?

0 投票
0 回答
114 浏览

android - 解锁引导加载程序的 HTC One M8 仍然通过 SafetyNet Check,hasBasicIntegrity 和 ctsProfileMatch 为 true。

我创建了一个应用程序,我需要知道是否有任何篡改设备的安全性。为了实现这一点,我实现了一个 SafetyNet Attestation API 解决方案,我根据证明调用的结果决定如何在应用程序中进行。

我现在正在 HTC One M8 设备上测试我的解决方案,并且在使用股票操作系统和引导加载程序进行测试时锁定了设备的证明响应,如预期的那样,basicIntegrity 和 ctsProfileMatch 都为 true。但是,在解锁设备的引导加载程序(没有生根,没有安装自定义 ROM)并再次运行测试时,获得了与初始测试相同的结果。我不知道为什么会这样,特别是因为 SafetyNet 文档说不应该是这样。任何人都可以阐明这个问题吗?

0 投票
1 回答
366 浏览

android - Android reCAPTCHA API:验证用户令牌有什么意义?

我正在研究新的Android reCAPTCHA API,但我并没有真正了解通过验证用户令牌的意义何在,https://www.google.com/recaptcha/api/siteverify以及为什么这不是由SafetyNet客户端自动完成的。

有人可以解释为什么需要这样做,如果我不这样做会发生什么以及为什么SafetyNet客户还没有这样做?

0 投票
1 回答
1506 浏览

android - 使用 SafetyNet Attestation API 在 android 中检查安全环境不起作用,因为它没有在成功或失败回调时获得回调

对于我正在使用的android中的安全环境检查

https://developer.android.com/training/safetynet/attestation.html

为此,我收到网络错误 null的故障回调。任何人都可以对此有所了解吗?

但是https://medium.com/@hargoyal/secure-android-app-with-safetynet-8e367a1c8ad0

这种方法有效,但不推荐使用SafetyNet.SafetyNetApi