nop*_*ole 5 security same-origin-policy facebook-graph-api
新的Facebook Javascript SDK可以让任何网站以Facebook用户身份登录并获取用户的数据......
所以它将是www.example.com,包括来自Facebook的一些Javascript,但我记得,该脚本被认为是www.example.com的起源,无法从facebook.com获取数据,因为它是违规的"同源政策".这不对吗?如果是这样,脚本如何获取数据?
从这里:https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript
相同的源策略可防止从一个源加载的文档或脚本从另一个源获取或设置文档的属性.此政策可以追溯到Netscape Navigator 2.0.
并在这里略有不同解释:http://docs.sun.com/source/816-6409-10/sec.htm
相同的源策略的工作原理如下:从一个源加载文档时,从不同源加载的脚本无法获取或设置窗口或框架中特定浏览器和HTML对象的特定属性(请参阅表14.2).
Facebook脚本不会尝试与您的域中的脚本进行交互或读取DOM对象.它只会自己发布到Facebook.它会获取您的站点名称,而不是通过与您的页面或您站点中的脚本进行交互,而是因为您填写表单以获取"喜欢"按钮时生成的脚本本身.我注册了一个名为" http://www.bogussite.com " 的网站,并获得了放在我网站上的代码.这段代码中的第一个想法是
iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.bogussite.com&
Run Code Online (Sandbox Code Playgroud)
所以脚本显然是通过iFrame链接中的硬编码URL参数获取您的网站信息.
到目前为止,Facebook的网站并不是唯一一个使用托管服务器上的脚本的网站.还有很多其他脚本以这种方式工作.例如,所有Google API(包括Google Gears,Google Analytics等)都要求您使用其服务器上托管的脚本.就在上周,当我试图弄清楚如何为我们的商店查找器为移动设备友好的Web应用程序进行地理定位时,我发现了一大堆地理定位服务,您可以使用托管在其服务器上的脚本,而不是复制脚本到你的服务器.
我认为,但不确定,他们使用 iframe 方法。至少画布应用程序的跨域接收器和 xfbml 内容使用了它。基本上,您页面上的 JavaScript 会在 facebook.com 域内创建一个 iframe。然后,该 iframe 就有权对 facebook 执行任何其需要的操作。可以使用多种方法之一来完成与父级的通信,例如 url 哈希。但我不确定他们在该部分使用哪种方法。
| 归档时间: |
|
| 查看次数: |
1717 次 |
| 最近记录: |