|
|
1
29
我很确定他们会使用引用URL来确定呼叫的来源。如果域与分配给密钥的不匹配,则是无效请求。
对于一个实际的例子,使用PHP可以使用
|
|
|
2
65
api密钥本身很可能是与该密钥相关联的域的单向散列,也是只有google api服务器知道的秘密。它可能包含一些其他的知名信息(当然对谷歌来说)。当您从该域发出请求时,API服务器将获取请求来自的域,并进行相同的单向哈希计算,并比较这两个值。 对于Ajax调用,它们最可能使用referer获取文档主机的域。虽然引用者可以被欺骗,但最终为了使用API,您需要让Googlejavascript在文档中执行。此时,这个javascript可以验证调用Ajax API调用的文档是否确实来自目标服务器。当然,如果您有自己的DOM实现或者对脚本进行即时修改,那么这也是一个骗局。然而,这种欺骗需要在客户端发生,并且希望使用Google API的网站能够欺骗客户端软件的可能性非常小。 注意,由于API基本上是免费的,所以它们也可以提供对其API的匿名访问。显然,谷歌的目的并不是保护未经授权的访问,而是确保他们能够收集尽可能多的有关该数据使用的数据,并能够将该使用与他们收集的有关目标域的其他数据相关联。因此,我不希望API密钥验证比我上面描述的复杂得多——更高级方法的投资回报率太低。 当然,还有一个问题是,通过API可能会有XSS攻击。但我不认为他们的API密钥与他们拥有的任何反XSS代码有太多的联系。 |
|
|
3
3
正如我的评论所说:
我的猜测是,Google可能会将呼叫者的IP地址与DNS查找一起使用。DNS并不是真正的骗局,因为你的DNS条目必须是正确的,网站才能找到你。 但是,即使这样也有问题,因为如果服务器使用循环IP地址DNS设置,那么在进行DNS查找时,谷歌将被重定向到其他IP地址。 从常见问题谈起
我猜它可能在使用
我的猜测是基于这样一个事实:它不适用于IP地址或别名,这意味着它不进行DNS检查。 此方法不能被欺骗,因为它必须是正确的头才能访问该页。但是,这意味着域的任何别名都将不起作用。 但是,这也意味着必须提供一个JavaScript库来访问代码,因为我相信您不能检查服务器端。 |
|
4
2
我同意所有的观点
that Franci Penov has listed.
我想详细介绍一下如何使用其他人的API密钥。我们假设你注册了
因此,如果您出于某种原因想要对您的API密钥保密(一个原因是,恶意人员可能会将您的密钥列入黑名单/阻止),那么不要通过服务器将密钥嵌入到客户机和代理请求中(您的应用程序代码现在拥有该密钥)。 |
|
|
5
-6
它工作的原因是您不能用JavaScript进行API调用。浏览器安全性防止javascript在任何地方发出请求,除了来自javascript的域。因此,任何来自javascript的API调用都需要通过存储API密钥的服务器进行跳转(javascript从未看到该API密钥)。 |
|
|
Jace Johnson · 我应该使用多个地图功能还是只使用一个 2 年前 |
|
|
Pop Bob · Api返回UnsupportedMediaType 2 年前 |
|
|
Mr FoX · 如何从mysqli输出json数组,而[重复] 2 年前 |