在阅读有关如何避免json劫持的文章时,我遇到了各种方法,包括发布所有内容或添加响应,因此它们不是有效的JavaScript。
最常见的前缀方法似乎是{} &&在对象或数组之前添加。Angular建议以开头)]}',\n。
{} &&
)]}',\n
为什么角度不使用更标准的{} &&方法?一个人不是完全安全吗?在JavaScript中难于使用吗?抛开角度,是否有充分的理由采用不太受欢迎的方法?
阻止将JSON响应解析为JavaScript对象或数组的任何操作都将阻止此JSON Hijacking方法。
有关使JSON安全的一些方法,请参阅本文。
但是,正如该答案所指出的那样,自Firefox 3起,这实际上不是问题。
Google使用“无法解析的[cruft]”来防御这种类型的攻击。应当指出,此漏洞已在firefox 3中修复,并且此漏洞是由浏览器如何刺穿json规范引起的。
在撰写本文时,Google似乎优先)]}'接受Gmail的回复。
)]}'