一尘不染

“)]}',\ n”和“ {} &&”之间在避免json劫持方面的区别

angularjs

在阅读有关如何避免json劫持的文章时,我遇到了各种方法,包括发布所有内容或添加响应,因此它们不是有效的JavaScript。

最常见的前缀方法似乎是{} &&在对象或数组之前添加。Angular建议以开头)]}',\n

为什么角度不使用更标准的{} &&方法?一个人不是完全安全吗?在JavaScript中难于使用吗?抛开角度,是否有充分的理由采用不太受欢迎的方法?


阅读 247

收藏
2020-07-04

共1个答案

一尘不染

阻止将JSON响应解析为JavaScript对象或数组的任何操作都将阻止此JSON Hijacking方法。

有关使JSON安全的一些方法,请参阅本文

但是,正如该答案所指出的那样,自Firefox
3起,这实际上不是问题。

Google使用“无法解析的[cruft]”来防御这种类型的攻击。应当指出,此漏洞已在firefox
3中修复,并且此漏洞是由浏览器如何刺穿json规范引起的。

在撰写本文时,Google似乎优先)]}'接受Gmail的回复。

2020-07-04