在阅读有关如何避免json劫持时,我遇到了各种各样的方法,包括POST一切或预先回复,因此它们不是有效的JavaScript。
最常见的前置方法似乎是在对象或数组前添加{} &&
。 Angular suggests前置)]}',\n
。
为什么angular不使用更标准的{} &&
方法?一个人不完全安全吗?在JavaScript中更难使用吗?除了角度之外,采用不那么受欢迎的方法是否有充分的理由?
答案 0 :(得分:2)
任何阻止JSON响应被解析为JavaScript对象或数组的东西都会阻止这种JSON劫持方法。
请参阅this post了解一些methods of making your JSON secure。
然而,作为this answer states,自Firefox 3以来它并不是真正的问题。
Google使用“无法解析的[cruft]”来防御这种类型的攻击。应该注意的是,此漏洞已在firefox 3中得到修复,此漏洞源于浏览器如何强制使用json规范。
在撰写本文时,Google似乎将)]}'
添加到他们对Gmail的回复中。