在阅读了这个关于为什么 google/facebook 等的问题后,添加了无法解析的内容,例如:
while(1);
for(;;);
&&&START&&& ... &&&END&&&
- 1和3结合
对于他们的 JSON 响应,我理解了他们的动机。但是我仍然不清楚为什么要使用这种相对复杂的机制,当类似的效果可以通过类似的东西来实现时
)
在开头添加额外内容以使整行无效并出现语法错误- 在评论中包装 JSON
现在,似乎这种对无限循环和(奇怪的)语法错误的额外保护将绕过旧的和宽松的 javascript 解析器,但我似乎找不到任何表明这种情况的参考资料。还有另一个SO question甚至继续讨论while(1);
解决方法(说明 1 可以被破坏)并拒绝表单的另一种解决方法{}&&
,但没有解释原因或引用任何来源。
其他参考:
- http://code.google.com/p/fbug/issues/detail?id=369
- http://prototypejs.org/learn/json,它建议将 JSON 包装在
/*-secure-\n...*/