我想知道我现在使用的 Google 地图 API 密钥是否安全。因为我有一个带有 Google 地图的 Cordova 应用程序,所以我生成了一个 API 密钥。我无法将我的域密钥列入白名单,因为它在手机上运行客户端。
此外,任何解压我的应用程序并阅读 index.html 或监听应用程序发出的 Web 请求的人都可以看到我的 API 密钥。
有什么方法可以保护我的 API 密钥吗?如果没有,使用 Google 地图或任何其他使用 API 密钥进行身份验证的第三方 API 是否安全?
我看到你的问题有两种可能的解决方案。我已经亲自实现了这两个功能(虽然不是使用 GMap),但仍然有一些缺点。
(1) 您可以使用后端技术将 API 密钥添加到您的请求中。为此,建议使用 Apache2 mod_proxy 和 mod_rewrite 之类的组合。然后,在您的应用程序中,您可以使用指向代理服务器的 URL,即https://yourserver.com/js/googleapis/maps/api/js https://yourserver.com/js/googleapis/maps/api/js并使 mod_rewrite 这个 URL 为类似的内容https://maps.googleapis.com/maps/api/js?key=API_KEY https://maps.googleapis.com/maps/api/js?key=API_KEY
mod_rewrite 的规则(未测试)可能如下所示:
RewriteCond %{QUERY_STRING} ^$
RewirteRule ^/googleapis/maps/api/js (.*)$ https://https://maps.googleapis.com/maps/api/js?key=API_KEY
我想你应该已经明白了。这种方法的一大优点是您可以在您控制的服务器上完全隐藏您的私人信息。缺点是:如果您的应用程序导致高流量,您很可能会在代理计算机上遇到高流量。此外,如果攻击者找出您的 Google Maps API 代理端点的 URL,他们将很容易通过您的服务检索 GMaps API。
(2) 第二个选项是创建一个服务来检索您的 API 密钥。假设您的应用程序已经需要某种形式的身份验证,无论如何,您都会选择 API 密钥服务仅向注册和经过身份验证的用户分发 API 密钥的方式。
对于调试移动 Web 应用程序的更好工具而言,这两种方法都有其缺点。 IE。在桌面上使用 MacOS、XCode 和 Safari 的攻击者可以与您的 Cordova 应用程序建立调试会话,并逐步调试在您的应用程序内运行的 JS 代码。这意味着无论您在 Cordova 竞技场中做什么,都可以很容易地附加到您的应用程序并读取变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)