2013-03-09 44 views
11

当我使用Facebook的Open Graph API时,我注意到由Facebook生成的JSONP响应在每个响应开始时似乎有一个无关的“/ ** /”像这样:为什么Facebook的JSONP回调以“/ ** /”开头

URL: 
https://graph.facebook.com/SOME_ID?method=get&pretty=0&sdk=joey&callback=FB.__globalCallbacks.f1c77f051c 

Response: 
/**/ FB.__globalCallbacks.f887adeec(...); 

这是为什么?

回答

6

我们添加了这个保护针对第三方网站绕过响应内容类型的攻击:< object type =“application/x-shockwave-flash”data =“http://graph.facebook.com?callback=[specifically crafted Flash字节]“> </object >

Google做了类似的事情,除了他们使用// ... + \ n(例如http://www.google.com/calendar/feeds/[email protected]/public/full?alt=json&callback=foo

+0

这是否意味着闪光接受,并在最后的附加内容的SWF样的文件? (API响应) – molnarg 2014-03-29 10:52:46

+0

好吧,我已经测试过它,看起来flash *不接受*未压缩* SWF文件末尾的附加字节。 – molnarg 2014-04-03 08:03:09

+0

[参考资料](https://en.wikipedia.org/wiki/JSONP#Rosetta_Flash)到exploit,又名Rosetta Flash,显然。此漏洞似乎是特制的Flash字节执行时认为它们位于目标站点(facebook.com)上,因此可以访问同源数据(Cookie,本地存储,我假设),但可以将该信息发送给第三方。 – 2016-02-21 22:12:07

2

当然,以防止XSSI ...所以你不能执行它...

http://maxime.sh/2013/02/javascript-quest-ce-que-le-xssi-et -comment-leviter/& USG = ALkJrhhjfdwBrK7kxNipOowAYacIcJm89g“>下面是关于法国的博客文章(用谷歌翻译)

-1

看起来像Facebook正在使用他们的JSON洗涤器,它只是留下剩余的评论持有者开头。最有可能留下意见用于调试目的,但在生产过程中,实际评论被清理。