我很想知道基于网址的API密钥限制是如何工作的,例如Google用来保护其Google地图服务的限制。
根据我从本文“Restricting Access to Ajax Services”中理解的内容,涉及两个部分:首先,服务使用单向散列函数为给定域创建特定密钥;第二,服务根据Referer头验证密钥。
虽然文章很明确,但我仍然有一个问题,试图了解验证方法的安全性。我的意思是,如果仅针对引用者检查密钥,这不是很容易伪造的吗?我认为hosts文件中的一个简单的“127.0.0.1 www.mydomain.com”足以欺骗验证,并认为引用者是www.mydomain.com。
我可能误解了一些事情,并且会得到一些澄清。
答案 0 :(得分:1)
您引用的文章的“限制”部分特别提到欺骗引荐来源的可能性。
更改主机文件可能确实足以伪造您的引荐来源,但仅限于您从自己的计算机访问网站时。这意味着您只能在本地测试时滥用许可证。这不是非常有趣的滥用。
要发布您的应用,您需要在所有人的浏览器上欺骗引荐来源,除非您使用本地运行的可执行文件中的API,在这种情况下,您可能在完全控制所有标题。