AngularJS JSON漏洞保护如何工作?

问题描述:

角网站建议与)]}'\n前缀您JSONs,从他们被称为JSONP保护:AngularJS JSON漏洞保护如何工作?

一个JSON漏洞允许第三方网站把你的JSON资源URL到一定条件下JSONP请求。为了解决这个问题,你的服务器可以为所有的JSON请求加上下面的字符串“)]}',\ n”。在将它作为JSON处理之前,Angular会自动去除前缀。

但所引用的文章中未提及这些右括号的,感觉就像那将是很容易解决(因为我JSONView铬插件已经patched他们剔除。为什么不这项工作对于'攻击者'?)。

相反,文章建议包裹JSON作为对象:

{"d": ["Philha", "my-confession-to-crimes", 7423.42]} 

这在某种程度上保护你。

为什么AngularJS会支持这个(奇数)保护,而能够工作吗?我不确定如何测试这个。

为什么不能用于'攻击者'?

为了去除字符,您必须有权访问原始文件的内容。

Chrome扩展程序可以访问该扩展程序。在原始文件中指向<script>的人不会。

为什么AngularJS赞成这种(奇数)保护,

,因为它的工作原理;)

和它的工作原理?

是的。当文件被视为JavaScript时,它将在到达数组之前在第1行上引发错误。这将阻止它试图评估数组,所以被覆盖的数组构造函数将无法读取数据。


令人高兴的是,安全问题似乎只存在于非常古老的Firefox版本中,因此您可能根本不需要担心这一点。

+0

酷!为什么他们不遵循博客中的建议?再次感谢。 – Pureferret 2015-03-02 10:13:55

+1

可能是由于答案最后一段中描述的原因,但你必须要求他们知道肯定。 – Quentin 2015-03-02 10:15:44