【问题标题】:Strange JSON response in Google PlusGoogle Plus 中奇怪的 JSON 响应
【发布时间】:2011-09-30 21:34:17
【问题描述】:

当我在 Google Plus 中调试错误时(从 Yahoo 导入 FB 联系人时),我发现了奇怪的 JSON 响应:

)]}'

[[["er",,,,,500]
,["e",2,,,57]
],'45932b7d6d6dc08e']

它是 JSONP 的一些变体吗?让我想起了 SQL 注入……那么,右括号和开头的引号的目的是什么?

【问题讨论】:

  • 闻起来像 XSS 对策
  • 闻起来像是有人想让全世界都知道他在 google+ 上……或者那可能是青少年精神……我真的说不出来
  • 哇,这很奇怪。它甚至以内容类型“application/json”提供,但却是完全无效的 json。
  • @Shaggy Frog,在我看来,它更像是一种 XSRF 对策。顶部的脚本确保它在通过<script src=...> 跨站点加载时不会正确解析,但是当通过遵循同源策略的 XMLHttp 加载时,可以删除断路器。
  • @GlennFerrieLive 由于有趣的上下文,我很快收到了答案。每个人也可以自己检查 JSON 响应。但是,仍然感谢您提供宝贵的见解。

标签: javascript json google-plus


【解决方案1】:

它基本上是 JSON,去除了空值,并在开头添加了垃圾以阻止 XSRF。这是一些可以对其进行解码的 PHP 代码(来自我正在研究的非官方 Google Plus API)。

https://github.com/jmstriegel/php.googleplusapi/blob/master/lib/GooglePlus/GoogleUtil.php

【讨论】:

  • Jason:我不明白删除“null”是什么意思。需要详细说明吗?
  • genesis:g+ 返回的 json 不是键值对,而是包含许多嵌套数组。这些数组中的许多字段不包含任何值,但它们没有表示为“null”,而是留空。因此,您会看到看起来像 [,,,0] 而不是 [null,null,null,0] 的数组。 javascript 解析器似乎对此没问题,但它没有传入 php 的 json_decode 函数。我认为谷歌的人选择这样做是为了减少传输大小。
  • 另外,为了进一步解释代码:您只需丢弃前 5 个字符,然后筛选剩余的字符串以寻找空字段,在找到的任何地方插入“null”。之后,它应该可以很好地解析。
  • 是的,它已经工作了。哇。我没想到!它是如此容易。你也可以回答这个问题吗?stackoverflow.com/questions/6672322/…
【解决方案2】:

这可能是一种类似于What does a Ajax call response like 'for (;;); { json data }' mean? 中描述的 XSRF 防御

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多