【发布时间】:2012-11-15 11:45:50
【问题描述】:
我有一个 Web 应用程序,其中包含一些非常直观的 URL,因此人们编写了一些 Chrome 扩展程序,使用这些 URL 向我们的服务器发出请求。不幸的是,这些扩展给我们带来了问题,锤击我们的服务器,发出格式错误的请求等,所以我们试图弄清楚如何阻止它们,或者至少难以向我们的服务器发送请求以阻止这些扩展被使用(我们提供了他们应该使用的 API)。
我们尝试在请求中添加一些自定义标头,在响应中添加 junk-json-preamble,但扩展作者已经更新了他们的代码以匹配。
我不熟悉 chrome 扩展程序,那么它们对主机页面有哪些访问权限?他们可以在主机页面上调用 JavaScript 函数吗?浏览器是否包含一个特殊的标头来区分主机页面请求和扩展请求?主机页面可以检查扩展列表并拒绝某些扩展吗?
我们考虑过的一些选项是:
- 按用户对 QPS 进行速率限制,但问题在于并非所有查询都是平等的,并且扩展程序通常会启动几个看起来像用户输入查询的昂贵查询。
- 限制用户可以使用的服务器时间,但问题是用户可能会通过多次浏览或运行昂贵的查询来达到此限制。
- 添加静态自定义标题/响应文本,但他们已更新代码以模仿我们的代码。
- 找出某种令牌(可能以某种方式加密)我们包含在我们的请求中,扩展无法轻易猜到。我们缩小/混淆了我们的 JS,因此可以将其嵌入到 JS 源代码中(因为它的变量名很难猜到)。
我意识到这可能不是一个 100% 可解决的问题,但我们希望要么让我们在解决这个问题上占上风,要么让我们的 UI 变得足够困难,以减少做这件事的人。
【问题讨论】:
标签: google-chrome-extension xmlhttprequest