我目前正在使用我生成的Google API密钥,我将其放入Android应用内以访问SafetyNet
和Google Maps
。我计划将所有调用Google Maps API的电话转移到我自己的服务器上,我将我的Google API密钥存储在服务器而不是客户端。但是,我还在我的应用程序中使用了SafetyNet
API,并且谷歌API密钥需要在Android应用程序的应用程序中进行调用以获得JWS
响应。所以我处在一个难题中。我不想在应用中的任何地方使用谷歌API密钥,如果我不使用SafetyNet
但我需要使用它,那就没问题了。
答案 0 :(得分:1)
使用the new API(Play Services 11.0.0+),API密钥不再存储在清单中。您将其作为参数传递给证明调用,这将打开一系列保护密钥的新方法。例如:
您可以在应用内混淆密钥,并以编程方式创建密钥。这只会让攻击者更难以检索它。
每次需要进行认证时,您都可以将密钥从服务器发送到客户端应用程序。这样,密钥永远不会存储在应用程序本身中。
然而,仅仅为证明提供单独的密钥应该绰绰有余。密钥仅限于您的免费配额can be easily increased。因此,潜在的攻击者窃取你的密钥的动机并不大,即使它被盗,也不会对你造成负面影响,因为证明API是免费的。