相关疑难解决方法(0)

为什么Google会在(1)之前提前; 他们的JSON回复?

为什么Google会while(1);在其(私人)JSON响应前加上?

例如,这是在Google日历中打开和关闭日历时的响应:

while(1);[['u',[['smsSentFlag','false'],['hideInvitations','false'],
  ['remindOnRespondedEventsOnly','true'],
  ['hideInvitations_remindOnRespondedEventsOnly','false_true'],
  ['Calendar ID stripped for privacy','false'],['smsVerifiedFlag','true']]]]
Run Code Online (Sandbox Code Playgroud)

我认为这是为了防止人们eval()对它进行操作,但你真正需要做的就是更换while然后你就可以了.我认为eval预防是为了确保人们编写安全的JSON解析代码.

我已经在其他几个地方看到了这种情况,但谷歌(邮件,日历,通讯录等)的情况更是如此.奇怪的是,谷歌文档开始了&&&START&&&,谷歌联系人似乎开始while(1); &&&START&&&.

这里发生了什么?

javascript security ajax json

3940
推荐指数
7
解决办法
51万
查看次数

为什么人们把代码放在"抛出1; <不要是邪恶的>"和"for(;;);"之类的代码中.在json面前回应?

可能重复:
为什么Google会在(1)之前提前; 他们的JSON回复?

Google会像这样返回json:

throw 1; <dont be evil> { foo: bar}
Run Code Online (Sandbox Code Playgroud)

和Facebooks ajax有这样的json:

for(;;); {"error":0,"errorSummary": ""}
Run Code Online (Sandbox Code Playgroud)
  • 为什么他们会放置会停止执行的代码并生成无效的json?
  • 如果它无效,它们如何解析它,如果你试图评估它会崩溃?
  • 他们只是从字符串中删除它(看起来很贵)?
  • 这有什么安全优势吗?

作为对安全目的的回应:

如果刮刀位于另一个域上,则必须使用script标记来获取数据,因为XHR不会跨域工作.即使没有for(;;);攻击者如何获取数据?它没有分配给变量,所以它不会被垃圾收集,因为它没有引用它?

基本上,为了获得数据跨域,他们必须这样做

<script src="http://target.com/json.js"></script>
Run Code Online (Sandbox Code Playgroud)

但即使没有崩溃脚本,攻击者也不能使用任何Json数据而不将其分配给您可以全局访问的变量(在这些情况下不是这样).崩溃代码没有任何效果,因为即使没有它,他们也必须使用服务器端脚本来使用其站点上的数据.

javascript security ajax json

210
推荐指数
4
解决办法
2万
查看次数

Google Plus中的奇怪JSON响应

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

)]}'

[[["er",,,,,500]
,["e",2,,,57]
],'45932b7d6d6dc08e']
Run Code Online (Sandbox Code Playgroud)

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

javascript json google-plus

9
推荐指数
2
解决办法
1619
查看次数

Facebook突然可以防止JSON劫持吗?

众所周知,当旧浏览器的Array ctor和Object ctor重载时,Facebook使用javascript响应(JS,而不是json)作为前缀while(1)&for(;;);,以防止脚本标签窃取json数据。

但是从最近的尝试来看,似乎不再是这种情况了(对于朋友列表,我确定它已经被使用了)

在此处输入图片说明

注意,现在,content-type是:

content-type: application/octet-stream

但是他们为什么这样做呢?现在安全吗?(我知道这是针对较旧的浏览器的,但仍然...)。

我知道的[..]问题是有问题的。但是{..}ctor呢?

题:

Facebook为什么要删除无限循环?以及他们现在如何缓解json劫持?

我的意思是,如果<script>tag尝试获取“ getFiriends”列表,现在会发生什么?(在非常老的浏览器中)

NB

值得一提的是,还有其他答案带有无限循环{..}!:

在此处输入图片说明

同样在这里(对象,无限循环)

在此处输入图片说明

javascript security json facebook cross-domain

6
推荐指数
1
解决办法
229
查看次数

javascript"for(;;);" 结构体

可能重复:
在Facebook中清空"for"循环ajax
AJAX如何调用响应(;;); {json data}是什么意思?

在分析一些facebook ajax请求正文时,我注意到每个代码都以for (;;);json对象开头

就像是

for (;;); {"a":1,"b":"\u003cdiv"}
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了这个结构但没有发现任何东西.

在每个ajax响应开始时,这个"for"结构可能是什么原因?

javascript

5
推荐指数
0
解决办法
225
查看次数

标签 统计

javascript ×5

json ×4

security ×3

ajax ×2

cross-domain ×1

facebook ×1

google-plus ×1