4

我有一个我只想为某些网站提供的 JSON Web 服务。这是一项使用 JSONP 通过 JavaScript 调用的服务。我将如何防止(或充其量使其更难)未经授权的网站访问它?要求用户/密码是行不通的,因为这在 JavaScript 中是显而易见的。

示例:我在 domain.com 的 web 服务提供天气信息,我只希望 website.com 和 pages.com 能够访问它。但是由于 Web 服务是通过 JavaScript 访问的,所以lazywebsite.com 可以只查看网站/网页的源代码并复制/粘贴其 JavaScript 代码。

到目前为止我的想法:

  • 使用 API 密钥并记录HTTP_REFERER访问服务的位置。这并不理想,因为HTTP_REFERER不可靠。
  • 让 website.com/webpage.com 使用我提供的算法在服务器端生成唯一的密钥,将其保存在会话中,并将其用作访问 Web 服务的密钥。这样,令牌只为该特定访问者注册,并且 JS 不能被复制/粘贴。然后问题转移到 website.com/webpage.com 保护他们生成唯一密钥的页面。

有没有更好的解决方案?

4

2 回答 2

4

没有完美的方法。

如果您对安全性很认真,那么解决方案就是不要将您的 JSON 服务发布到世界各地。将其设为私有,并要求 website.com 和 pages.com 从他们的服务器向您的服务器发出私有的后端请求以获取数据。然后,您可以验证您想要的所有内容,并且秘密在其服务器代码中保持安全。基本上它是一个代理解决方案。(一个很好的优势:您的 JSON 数据现在将与网站具有相同的来源,这意味着您不必进行 JSONP hack)。

如果您对安全性不太认真,只想让它变得困难,那么您已经布置了最简单的事情。检查推荐人。该标头可以被欺骗,但这很痛苦,希望大多数攻击者不会考虑尝试。还需要密码和/或 API 密钥(它们是等效的),并在 Javascript 中对其进行混淆以使其更难获取。

于 2009-08-20T02:30:42.930 回答
-3

作为对这个老问题的更新,我建议您看看 facebook 和 twitter javascript API 为安全所做的工作。

于 2011-12-13T18:14:02.547 回答