如果它使用SafetyNet,如何真正保护Android应用程序的谷歌API密钥?

时间:2017-06-13 01:18:30

标签: android google-maps security safetynet

我目前正在使用我生成的Google API密钥,我将其放入Android应用内以访问SafetyNetGoogle Maps。我计划将所有调用Google Maps API的电话转移到我自己的服务器上,我将我的Google API密钥存储在服务器而不是客户端。但是,我还在我的应用程序中使用了SafetyNet API,并且谷歌API密钥需要在Android应用程序的应用程序中进行调用以获得JWS响应。所以我处在一个难题中。我不想在应用中的任何地方使用谷歌API密钥,如果我不使用SafetyNet但我需要使用它,那就没问题了。

1 个答案:

答案 0 :(得分:1)

使用the new API(Play Services 11.0.0+),API密钥不再存储在清单中。您将其作为参数传递给证明调用,这将打开一系列保护密钥的新方法。例如:

  • 您可以在应用内混淆密钥,并以编程方式创建密钥。这只会让攻击者更难以检索它。

  • 每次需要进行认证时,您都可以将密钥从服务器发送到客户端应用程序。这样,密钥永远不会存储在应用程序本身中。

然而,仅仅为证明提供单独的密钥应该绰绰有余。密钥仅限于您的免费配额can be easily increased。因此,潜在的攻击者窃取你的密钥的动机并不大,即使它被盗,也不会对你造成负面影响,因为证明API是免费的。