保护JSON Web服务

时间:2009-08-20 02:22:45

标签: web-services security protection

我有一个JSON网络服务,我只想为某些网站提供。这是一个使用JSONP通过JavaScript调用的服务。我如何防止未经授权的网站访问它(或者最好使其变得更加困难)?要求用户/密码不起作用,因为这在JavaScript中是明显可见的。

示例:我在domain.com上的网络服务提供了天气信息,我只希望website.com和webpage.com能够访问它。但由于通过JavaScript访问Web服务,lazywebsite.com只能查看网站/网页的来源并复制/粘贴他们的JavaScript代码。

到目前为止我的想法:

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

有没有更好的解决方案?

2 个答案:

答案 0 :(得分:4)

没有完美的方式。

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

如果你对安全性不那么认真,只是想让它变得困难,那么你已经完成了最简单的事情。检查Referer。那个标题可能会被欺骗,但这很痛苦,希望大多数攻击者不会想到尝试它。还需要密码和/或API密钥(它们是等效的),并在Javascript中对其进行模糊处理以使其更难以获取。

答案 1 :(得分:-3)

作为对这个老问题的更新,我建议你看一下facebook和twitter javascript API为安全做些什么。