如何在 Ionic/Cordova 应用程序中保护我的 Google 地图 Javascript V3 API 密钥?
How to secure my Google Maps Javascript V3 API Key within an Ionic/Cordova App?
我目前正在开发一个 Ionic 应用程序,我在其中嵌入了 Google 地图。 Google Maps V3 API 建议使用 API 键来跟踪使用情况。问题是当我为浏览器使用创建 API 密钥时,我只能通过指定引荐来源网址来保护我的 API 密钥。现在我在移动设备上没有推荐人,所以我该怎么做才能避免其他人也可以使用我的 API 密钥?
在我看来,你有两个选择:
- 您根本无法保护它,因为为了让其他人获得密钥,他们需要从您的应用程序中提取它。在大多数情况下,即使有人获得了密钥,也怀疑他们是否会将其用于任何恶意行为,因为他们只能获得自己的密钥。这是您必须逐个项目评估的风险,并确定您是否可以承受。
- 第二种选择是将其保护到特定的引荐来源网址,然后在设备上欺骗您的 Web 视图所使用的引荐来源网址。关于如何执行此操作,有几个关于堆栈溢出的示例。参见 Specifying HTTP referer in embedded UIWebView
无论哪种方式,其他人仍然有可能获取您的密钥并使用它代表您发出请求。即使您走那条路,他们也可以通过自己欺骗引荐来源网址来做到这一点,因为它是由客户端浏览器提供的header。
我认为最好的方法是创建一个代理服务器,它使用服务器密钥调用 API,并且要求用户使用他们的用户 ID 登录(如果您的应用程序需要登录)或者可能是设备ID。至少你可以控制正在发生的事情。
我目前正在开发一个 Ionic 应用程序,我在其中嵌入了 Google 地图。 Google Maps V3 API 建议使用 API 键来跟踪使用情况。问题是当我为浏览器使用创建 API 密钥时,我只能通过指定引荐来源网址来保护我的 API 密钥。现在我在移动设备上没有推荐人,所以我该怎么做才能避免其他人也可以使用我的 API 密钥?
在我看来,你有两个选择:
- 您根本无法保护它,因为为了让其他人获得密钥,他们需要从您的应用程序中提取它。在大多数情况下,即使有人获得了密钥,也怀疑他们是否会将其用于任何恶意行为,因为他们只能获得自己的密钥。这是您必须逐个项目评估的风险,并确定您是否可以承受。
- 第二种选择是将其保护到特定的引荐来源网址,然后在设备上欺骗您的 Web 视图所使用的引荐来源网址。关于如何执行此操作,有几个关于堆栈溢出的示例。参见 Specifying HTTP referer in embedded UIWebView
无论哪种方式,其他人仍然有可能获取您的密钥并使用它代表您发出请求。即使您走那条路,他们也可以通过自己欺骗引荐来源网址来做到这一点,因为它是由客户端浏览器提供的header。
我认为最好的方法是创建一个代理服务器,它使用服务器密钥调用 API,并且要求用户使用他们的用户 ID 登录(如果您的应用程序需要登录)或者可能是设备ID。至少你可以控制正在发生的事情。