基于URL的API密钥限制:验证如何工作?

4
我想了解基于URL的API密钥限制是如何工作的,例如谷歌用于保护其Google Maps服务的方法。
据我从这篇文章“ 限制访问Ajax服务”中所理解的,这个过程包含两个部分:首先,服务使用单向哈希函数为给定域创建一个特定的密钥;其次,该服务根据Referer标头验证密钥。
虽然这篇文章已经相当详细地解释了,但我仍然不明白验证方法有多安全。我的意思是,如果只根据Referer来检查密钥,那么这种方法很容易被伪造吧?我认为,在hosts文件中简单地添加“127.0.0.1 www.mydomain.com”就足以欺骗验证器,并认为Referer是www.mydomain.com。
也许我误解了一些内容,希望能得到一些澄清。

看起来你的链接有问题。如果你有机会修正它,我很乐意查看! - Branden Hall
1个回答

1

你引用的文章中的“限制”部分特别提到了欺骗来源的可能性。

修改主机文件确实足以伪造您的来源,但仅当您从自己的计算机访问该网站时才有效。这意味着只有在本地测试时才能滥用许可证。这不是非常有趣的滥用。

为了发布您的应用程序,您需要在所有人的浏览器上欺骗来源,除非您正在使用来自本地运行的可执行文件的 API,在这种情况下,您可能完全控制所有标头。


我现在明白了。但是,如果API密钥用于向服务写入数据,比如像Google的分析跟踪器这样的服务,有人可以在自己的计算机上使用修改后的标头将虚假数据注入到该服务中。实际上,我并没有看到太多这种伪造行为,但从理论上讲,我认为这是可能的。感谢您的时间、回答和修复我的链接。 - ivb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接