提问人:Asaph 提问时间:6/3/2014 最后编辑:CommunityAsaph 更新时间:6/3/2014 访问量:1204
是否可以将 API 访问限制从 javascript 小组件到合作伙伴站点的域?
Can I restrict API access from a javascript widget to a partner site’s domain?
问:
我想开发一个客户端 javascript 小部件,该小部件可能仅包含在授权的合作伙伴网站上。javascript 小部件将对主网站进行 REST 调用。合作伙伴网站应该能够使用 javascript 小部件,而无需安装任何服务器端组件。未经授权的站点使用给定密钥的任何尝试都应失败。显然,任何交付给 Web 浏览器的 API 密钥最终都容易受到暴露,即使它们以某种方式被遮挡了。
我寻找的一个真实世界的例子是 Google Maps Javascript API v3,它施加了配额限制,并可以选择性地允许 API 客户端将给定密钥的访问限制为指定域。但看起来这个限制是基于推荐人的,这似乎太容易伪造了。使用此系统的网站似乎容易受到攻击者的攻击,攻击者使用其密钥(在 HTML 中以纯文本形式可见)并运行足够的 API 调用以超过配额。同样值得注意的是,谷歌区分了“浏览器密钥”和“服务器密钥”。
以下是我发现的一些相关问题,没有一个有令人鼓舞的答案:
- PHP 驱动的 API 如何跨域验证真正的客户端(referer)(知道标头可以被欺骗)?
- 保护 API 以用于 Javascript 小部件
- Javascript API - 通过向用户提供白名单选项来限制域
是否有现有的设计模式、标准或加密方案可以解决这个问题?或者如果没有一些服务器端组件,就没有办法做到这一点?
答: 暂无答案
评论