我使用getJSON将数据从域发送到另一个域。
以下是示例: 域A(www.a.com)使用jQuery getJSON()将数据发送到域B(www.b.com) 域B包含解析数据的所有php脚本。
出于安全考虑,我想确保数据发送方是域A而不是其他域。 我读了很多帖子并搜索过,我遇到了PHP的$ _SERVER ['HTTP_REFERER']。但是,我注意到很多人说这不是最好的方式,有些浏览器不支持它。
然后我发现另一个使用cookie和访问令牌的说法让我更加困惑。 我希望有人能指出我正确的方向。
这是用于将数据发送到dmoain B的jquery脚本
$.getJSON('b.com/parse.php?data=' + data +'&callback=?', function(data) {
//do something
});
答案 0 :(得分:0)
我想确保数据发送方是域A而不是其他
无法可靠地检测请求是否由在特定域上托管的页面中运行的JavaScript触发。
使用cookie和访问令牌让我更加困惑
这是一种间接方法。基本上这个过程可以像这样工作:
仍然可以从应用程序中提取令牌,因为必须将其提供给客户端。但是,这必须由具有完全访问权限的人员完成,因此无法通过想要访问您的数据的第三方网站来完成。
这样的网站可以访问托管应用程序的站点,获取标识令牌,然后访问托管数据的站点。有办法防范这个......
如果服务器正在向数据站点发出请求,那么它可能会从给定的IP地址发出异常大量的请求。你可以限制它。 (然后他们可以通过不同的源ips循环来解决这个问题。)
如果请求是由Web浏览器发出的,那么对令牌的请求将来自与数据请求不同的IP地址。您可以将令牌自动锁定到给定的IP地址。但是,对于通过代理服务器访问的用户而言,这将会中断(例如,相当多的移动用户和使用AOL的人(上次我听说过AOL服务器的配置方式)。
答案 1 :(得分:-1)
$ _ SERVER ['HTTP_REFERER']更好,因为它的服务器端。