"顶级 JSON 数组" 是什么,为什么它们是安全风险?

9 浏览
0 Comments

"顶级 JSON 数组" 是什么,为什么它们是安全风险?

在下面的视频中,微软PDC演讲者在时间标记21:40处表示,重要的是将所有的JSON包装起来,使其不成为顶级数组:

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

未包装的顶级数组存在什么风险?

我应该如何检查和确定自己是否存在漏洞?我从第三方购买了许多组件,并有外部供应商开发我的代码。

0
0 Comments

“顶级JSON数组”是什么,为什么它们会带来安全风险?

在几年前,Jeremiah Grossman发现了一个影响Gmail的非常有趣的漏洞。一些人通过使用无法解析的冗余代码来解决这个漏洞。微软之所以谈论这个问题,是因为他们还没有修复他们的浏览器。Mozilla认为这是JSON规范的一个漏洞,因此他们在Firefox 3中修补了它。我完全同意Mozilla的观点,但每个Web应用程序开发人员都必须自己防御这个非常隐晦的漏洞。

在2017年,将敏感信息发送到JSON数组中仍然存在安全风险吗?这个问题值得另外撰写一篇文章,或许可以在security.stackexchange.com上进行讨论。

到2023年,我可以说你不需要担心这个问题。最后一个存在漏洞的浏览器发布已经超过十二年了,而且你的网站可能根本无法在该浏览器上加载(因为它只支持TLS 1.0,而你的网站希望只通过TLS 1.2+提供服务)。

感谢你提醒我更新这个信息。

0
0 Comments

顶级JSON数组是指直接以数组形式出现在JSON对象中的数组。它们被认为是一种安全风险,原因是可以通过重新定义Array()构造函数来利用它们进行攻击。

攻击的可能方式如下所示:

function Array(n) {
  var self = this;
  setTimeout(function() {
    sendToEvilHackers(self);
  }, 10);
  return this;
}

某些浏览器会将该构造函数用于[n, n, n]数组表示法。因此,跨站请求伪造(CSRF)攻击可以利用你与银行的开放会话,在已知的JSON URL上插入