【问题标题】:Why do Facebook's JSONP callbacks start with "/**/"为什么 Facebook 的 JSONP 回调以“/**/”开头
【发布时间】:2013-02-24 17:50:51
【问题描述】:

当我使用 Facebook 的 Open Graph API 时,我注意到 Facebook 生成的 JSONP 响应似乎在每个响应的开头都有一个无关的“/**/”,如下所示:

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

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

这是为什么?

【问题讨论】:

    标签: facebook-graph-api jsonp


    【解决方案1】:

    我们添加此功能是为了防止第三方网站通过执行以下操作绕过响应的内容类型的攻击:

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

    【讨论】:

    • 这是否意味着 Flash 接受一个类似 SWF 的文件,最后有附加内容? (API 响应)
    • 好吧,我已经测试过了,似乎 flash确实 接受 未压缩 SWF 文件末尾的额外字节。
    • Reference 显然是漏洞利用,又名 Rosetta Flash。该漏洞似乎是特制的闪存字节在执行时认为它们位于目标站点(facebook.com)上,因此可以访问同源数据(我认为是 cookie、本地存储),但随后可以将该信息发送到第三方。
    【解决方案2】:

    当然是为了防止XSSI...所以你不能执行它...

    http://maxime.sh/2013/02/javascript-quest-ce-que-le-xssi-et-comment-leviter/&usg=ALkJrhhjfdwBrK7kxNipOowAYacIcJm89g">这是一篇关于此的法语博客文章(带有谷歌翻译)

    【讨论】:

      【解决方案3】:

      防止 XSSI 查看 facebook 的图表以获取更多帮助 https://developers.facebook.com/docs/opengraph/overview/

      【讨论】:

      • 也许给出更具体的sn-ps而不是仅仅链接?
      【解决方案4】:

      似乎 Facebook 在他们的 JSON 上使用了一个清理器,它只是在开始时留下剩余的评论持有者。很可能将 cmets 留在那里用于调试目的,但在生产中实际的 cmets 会被清除。

      【讨论】:

        猜你喜欢
        • 2013-02-16
        • 2011-01-25
        • 2012-12-12
        • 1970-01-01
        • 2013-01-10
        • 2011-01-29
        • 2011-09-06
        • 1970-01-01
        • 2015-11-24
        相关资源
        最近更新 更多