【问题标题】:What's the point of a javascript API key when it can be seen to anyone viewing the js code任何查看 js 代码的人都可以看到 javascript API 密钥有什么意义
【发布时间】:2011-02-05 14:06:27
【问题描述】:

我见过像 Google 这样的服务,它们要求您在进行 javascript 调用时添加 API 密钥,就像这样。

https://www.google.com/jsapi?key=thekeygoeshere

当可以看到代码并且可以读取密钥时,拥有这个 javascript api 密钥有什么意义。有人不能复制此密钥并将其用于自己的站点吗?还是他们在后台执行了其他操作以确保密钥属于发出呼叫的站点?

【问题讨论】:

    标签: javascript jquery security api


    【解决方案1】:

    大概他们会检查referer HTTP 标头。

    大多数用户发送它。所以如果是:

    • 匹配到key的网站,就可以正常运行了。
    • 与密钥不匹配的网站,他们可以拒绝请求。
    • 空白,它们可以正常运行并允许一小部分人在错误的站点上使用 API。

    使用错误密钥访问网站的大多数访问者都会被阻止,因此首先在网站上使用错误密钥是不值得的。

    【讨论】:

    • 这将是相当冒险的,因为根据标准,Referer-Header 可以是空的(对于许多用户来说,因为他们不希望网站知道他们以前在哪里)。
    • 更新了解释为什么它没有真正风险的答案。
    • 这个论点总是会出现,但即使有 10% 的用户打开它(我相信它会更大),您也会注意到一个高流量网站是否正在使用您的密钥。
    • 如果超过 0.5% 的用户禁用了推荐人,我会感到惊讶。
    【解决方案2】:

    谷歌代码将使用 AJAX 或类似的东西来调用他们的服务器,详细说明您的密钥,以及正在使用它的网站的网址。然后,Google 可以检查它是否是该密钥的正确站点,如果不正确,则停止代码工作。

    虽然,地图 API 似乎可以在任何网站上使用任何密钥。

    【讨论】:

    • 从 v3 开始,地图 API 不再需要密钥(除非您使用的是首要服务)
    猜你喜欢
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    相关资源
    最近更新 更多