我有一个JSON网络服务,我只想为某些网站提供。这是一个使用JSONP通过JavaScript调用的服务。我如何防止未经授权的网站访问它(或者最好使其变得更加困难)?要求用户/密码不起作用,因为这在JavaScript中是明显可见的。
示例:我在domain.com上的网络服务提供了天气信息,我只希望website.com和webpage.com能够访问它。但由于通过JavaScript访问Web服务,lazywebsite.com只能查看网站/网页的来源并复制/粘贴他们的JavaScript代码。
到目前为止我的想法:
HTTP_REFERER
。这并不理想,因为HTTP_REFERER
不可靠。有没有更好的解决方案?
答案 0 :(得分:4)
没有完美的方式。
如果您对安全性非常认真,那么解决方案就是不要将JSON服务发布到全世界。将其设为私有,并要求website.com和webpage.com从其服务器向您的服务器发出私有的后端请求以获取数据。然后,您可以验证您想要的所有内容,并在其服务器代码中保密。基本上它是一个代理解决方案。 (一个很好的优势:您的JSON数据现在与网站具有相同的来源,这意味着您不必执行JSONP黑客攻击)。
如果你对安全性不那么认真,只是想让它变得困难,那么你已经完成了最简单的事情。检查Referer。那个标题可能会被欺骗,但这很痛苦,希望大多数攻击者不会想到尝试它。还需要密码和/或API密钥(它们是等效的),并在Javascript中对其进行模糊处理以使其更难以获取。
答案 1 :(得分:-3)
作为对这个老问题的更新,我建议你看一下facebook和twitter javascript API为安全做些什么。