相关疑难解决方法(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万
查看次数

Ajax调用响应如'for(;;); {json data}'是什么意思?

可能重复:
为什么人们把代码放在"抛出1; <dont be evil>"and"for(;;);"在json回应之前?

我发现这种语法在Facebook上用于Ajax调用.我在for (;;);回答开始时对此感到困惑.它是干什么用的?

这是电话和回复:

GET http://0.131.channel.facebook.com/x/1476579705/51033089/false/p_1524926084=0
Run Code Online (Sandbox Code Playgroud)

响应:

for (;;);{"t":"continue"}
Run Code Online (Sandbox Code Playgroud)

ajax json facebook

196
推荐指数
5
解决办法
5万
查看次数

什么是"顶级JSON阵列"以及为什么它们存在安全风险?

在下面的视频中,在时间标记21:40,Microsoft PDC演示者说重要的是所有JSON都被包装,因此它不是顶级数组:

https://channel9.msdn.com/Events/PDC/PDC09/FT12

打开顶层阵列的风险是什么?

我该如何检查,看看我是否容易受到伤害?我从第三方购买了许多组件,并有外部供应商开发我的代码.

javascript security xss json

66
推荐指数
2
解决办法
3万
查看次数

为什么要"while(1);" 在XmlHttpRequest响应?

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

我正在使用谷歌日历玩萤火虫.我碰巧发现某些XHR请求有如下响应:

while(1);[['us','bW9yZ2FuLmNoZW5nbW9AZ21haWwuY29t 20090320/20090904 63378122163']]
Run Code Online (Sandbox Code Playgroud)

它看起来像带有前缀死循环javascript语句的JSON.

我不确定为什么Google Calendar会有这种XHR响应.有关于此的任何已知的AJAX实践吗?

javascript ajax json xmlhttprequest

46
推荐指数
0
解决办法
6622
查看次数

是否有可能XSS利用适当的JavaScript字符串转义来利用JSON响应

可以通过重写数组构造函数来利用JSON响应,或者如果恶意值不是JavaScript字符串转义的话.

让我们假设这两个向量都以正常方式处理.谷歌通过在所有JSON前加上以下内容来捕获JSON响应直接来源:

throw 1; < don't be evil' >
Run Code Online (Sandbox Code Playgroud)

然后是JSON的其余部分.因此,Evil博士不能,使用此处讨论的那种漏洞利用http://sla.ckers.org/forum/read.php?2,25788获取您的cookie(假设您已登录),将以下内容放在他的网站上:

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

至于字符串转义规则,如果我们使用双引号,我们需要在每个前面加上反斜杠,每个反斜杠加上另一个反斜杠等.

但我的问题是,如果你正在做所有这些怎么办?

Burpsuite(自动安全工具)检测在JSON响应中返回unHTML转义的嵌入式XSS尝试,并将其报告为XSS漏洞.我有一份报告说我的应用程序包含此类漏洞,但我不相信.我已经尝试过了,我无法进行漏洞利用工作.

所以我不认为这是正确的,但我问你StackOverflow社区,要权衡.

有一个特定的案例,IE MIME类型嗅探,我认为可能会导致漏洞利用.毕竟,IE 7仍然具有"功能",无论Content-Type标头如何,都会执行嵌入在图像注释中的脚本标签.我们首先要抛开这种明显愚蠢的行为.

当然,根据旧的默认jQuery行为,JSON将由本机JavaScript解析器(Firefox中的Window.JSON)或eval()解析.在任何情况下,以下表达式都不会导致执行警报:

{"myJSON": "legit", "someParam": "12345<script>alert(1)</script>"}
Run Code Online (Sandbox Code Playgroud)

我是对的还是我错的?

javascript security xss jquery json

39
推荐指数
3
解决办法
6万
查看次数

在Facebook ajax中清空"for"循环

在浏览facebook并使用Firebug网络调试器时,我注意到facebook的AJAX响应都以空循环开始.

例:

for(;;);{...}
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这样做?我认为这是为了防止某种XSS攻击,但我并不完全理解.谢谢!

javascript ajax facebook

26
推荐指数
1
解决办法
3087
查看次数

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
查看次数

如何让jquery.Ajax在json响应前使用"throw 1; <dont be evil>"?

Google将Unparsable Cuft返回给json响应, 如下所示:

throw 1; <dont be evil> { foo: bar}
Run Code Online (Sandbox Code Playgroud)
  • 我当前的Web应用程序使用jQuery.Ajax来检索JSON数据.如何修改它们以使用有效数据?

这是一个相关的演示

javascript security jquery json telerik

3
推荐指数
1
解决办法
426
查看次数