5

我正在使用这个库: https
://github.com/scottyab/safetynethelper 我已经阅读了 Android 开发者网站和存储库中的文档。一切正常,但我不清楚。表明从服务器获取 nonce 比在它自己的应用程序上创建它更安全。为什么将来自 SafetyNet API 的响应传递给服务器更好

4

1 回答 1

6

最常见的是 SafetyNet Attestation API 用于确定您是否信任与您的服务器通信的设备和应用程序。

因此,您并不想在您的 Android 应用程序中检查 JWS 响应,否则攻击者可以简单地修改您的应用程序以删除您已放置的任何验证逻辑。这就是为什么最好将响应传递给服务器,并在那里做出任何决定(你信任你的服务器)。

在您的服务器上,您可以验证响应,如果一切正常,则允许您尝试保护的任何操作 - 可能允许登录或下载某些数据。

为什么从您的服务器提供的 nonce 更安全?攻击者可以随意更改在您的应用程序中生成的随机数(即本质上是随机且您不知道的)。如果控制随机数会更好!这样,当您在服务器上验证 JWS 响应时,您可以检查 nonce 是否正确。

在您的服务器上生成随机数的一个好方法可能是对会话 ID 或用户 ID 和时间戳的组合进行哈希处理。

于 2016-12-15T04:48:37.107 回答