当前位置: 首页 > 面试题库 >

哪种json答案以)]}'开始

养枫涟
2023-03-14
问题内容

我注意到一些json查询,特别是在Google服务中,返回一个特殊的“ json”,它以一个关闭序列开头,然后只是一个数组结构,用方括号指定。

这是什么样的ajax?是否有一些库,js或py,正在解析它?

举一个更具体的例子:

>>> import json
>>> import urllib2
>>> url=urllib2.urlopen("https://plus.google.com/u/0/_/socialgraph/lookup/visible/?o=%5Bnull%2Cnull%2C%22114423404493486623226%22%5D")
>>> url.readline()
")]}'\n"
>>> url.readline()
'\n'
>>> url.readline()
'[["tsg.lac",[]\n'

然后是一个典型的数组。因此,完整的答案是两行“标头”然后是一个数组,但是“标头”非常令人困惑,我想知道它是否来自标准ajax库,或者仅仅是这些家伙的想法。

嗯,如果您使用Chrome的开发人员工具来查看实际查询,就会看到相同的内容。因此,我被认为是一个实际的答案,而不是查询的人工产物。


问题答案:

在消息开头使用无效的JSON是一种克服CSRF和对JavaScript的数组构造函数进行棘手攻击的组合的方法。

如果该URL返回了有效的,未包装的数组,那么您访问的任何网站都可能会使Array函数超载,在页面上放置/注入对该Google+
URL的脚本引用,并在您仅加载其页面时收集您的私有/安全数据。

Google自己的客户端代码可以在解析无效的JSON之前将其删除,因为它使用的是传统的XHR请求,从而使他们可以访问原始响应。远程站点只能通过脚本元素注入来访问它,并且没有机会在浏览器解析数据之前对其进行预处理。后者类似于JSONP的工作方式,其中Array构造函数无意间成为了回调函数。

您会在许多知名网站上看到类似的方法,这些网站会返回JSON数组以响应GET请求。for (;;);例如,Facebook
用来填充它们。如果您尝试在这些Facebook
API上使用CSRF攻击,则浏览器仅在远程站点上输入一个无限循环,引用Facebook的私有API。在Facebook.com上,他们的客户端代码可以在运行JSON.parse()之前将其剥离。



 类似资料:
  • 本文向大家介绍Dubbo有哪几种集群容错方案,默认是哪种?相关面试题,主要包含被问及Dubbo有哪几种集群容错方案,默认是哪种?时的应答技巧和注意事项,需要的朋友参考一下 Failover Cluster 失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。 Failfast Cluster 快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录

  • 问题内容: 我试图让keytool.exe运行,但是一旦打开它,命令提示符就会消失得如此之快。 我也尝试手动在命令提示字元中输入 C:\ Program Files \ Java \ jdk1.6.0_25 \ bin 它表示“程序”未被识别为内部或外部命令,可操作程序或批处理文件。我无法打开程序文件夹本身。 我去了环境变量并更改了路径 1)C:\ Program Files \ Java \ j

  • 哈希表有m个插槽,并使用带线性探测的开放寻址来解决冲突。桌子一开始是空的。将键k1插入表中,接着是k2,然后是k3。解释插入这些键时有4个探针的条件?得到4个探针的概率是多少?

  • 下面是SPOJ的一个归档问题。示例测试用例通过了,但我在提交时得到了W/A。我缺少一些测试用例(testCase)。需要帮助来找出我错过了什么案例和/或我做错了什么。 瓢虫艾达正在和她的朋友维尼特玩除数游戏。这个游戏有以下规则。他们之间有一堆石头。移动中的玩家可以选择至少1块,最多σ(N)块石头(其中σ(N)代表N的除数)。显然,N在每次移动后都会发生变化。得不到任何石头(N==0)的人输了。 因

  • 引言 我目前本科大四,正在春招找前端,有大厂内推的友友可以聊一聊,球球给孩子的机会吧。 我整理了一份10w+字的前端技术文档:https://qx8wba2yxsl.feishu.cn/docx/Vb5Zdq7CGoPAsZxMLztc53E1n0k?from=from_copylink ,对前端感兴趣的同学可以查看、参与构建。 问题 选择题 棵含有6个节点完全二叉树的中序遍历为[n,y,m,x,

  • 我在实践中读到了一致性。现在我想了解如何处理InterruptedException 来自书籍的建议: -传播异常(可能在特定于任务的清理之后),使您的方法也成为可中断的阻塞方法;或者,恢复中断状态,以便调用堆栈中更高级别的代码可以处理它 -只有实现线程中断策略的代码才能吞咽中断请求。通用任务和库代码绝不应吞没中断请求。 前两种说法我很清楚,但第三种我不明白。你能澄清一下吗?最好提供示例。 吞下中