在WordPress插件中隐藏API密钥

时间:2015-05-26 00:27:04

标签: wordpress api google-api api-key

我开发了WordPress插件WP Google Fonts v3.1.1,它使用Google Fonts API下载首次使用时可从Google获得的整个字体列表,然后根据访问时间每12小时下载不超过一次管理面板页面。我在代码中保留了API密钥,因为它是一个公钥,并被Google用于跟踪和限制使用。

    var $api_key = '?key=[the key I am trying to leave out]';

    var $api_url = 'https://www.googleapis.com/webfonts/v1/webfonts';

我知道其他人可以访问密钥并可能在他们自己的插件变体中重复使用它,但即使这样也没有预见到达到使用限制。

此后,该插件变得相当流行,增加了通话次数。

此外,一些主题开发人员已将API密钥和代码的其他代码段包含在各自的变体中,此外还增加了密钥的使用率。

这导致频繁使用限制。由于超额,任何一天的大约一半的电话被拒绝。

该密钥适用于任何域名,因此我无法通过推荐来源限制某些解决方案建议。

因为它是一个WordPress插件,它本质上是开源的,所以任何开发人员都可以快速找到密钥,即使它在配置文件中也是如此。

我想让插件尽可能易于使用,所以我不喜欢个人必须获得自己的密钥并在设置面板中输入它的想法。

我可以选择将API密钥保留在源代码之外吗?

我已经阅读了解决这个问题的解决方案can't be avoided,或者我应该创建一个proxy web service as an intermediate layer,我不确定会解决这种情况。

1 个答案:

答案 0 :(得分:2)

您无需指示您的用户如何创建自己的API密钥。您无法使用您创建的API密钥发布PHP WordPress插件。

Changes to the Google APIs Terms of Service

  

要求开发商做出合理的努力来保持他们的私密性   密钥私有,而不是嵌入开源项目。

如果代码中的用户可以看到密钥,则必须指示他们如何创建自己的密钥,而不能共享您的密钥。如果您这样做,您的Google Developer Console帐户可以被撤销。阅读此here