この質問を読んだ後、google/facebook などが次のような解析不能なクラフトを追加する理由について:
while(1);
for(;;);
&&&START&&& ... &&&END&&&
- 1と3を合わせて
彼らの JSON 応答に対して、私はその動機を理解しました。しかし、同様の効果が
)
構文エラーで無効な行全体をレンダリングするためのエクストラを先頭に追加する- JSON をコメントでラップする
現在、この無限ループと (奇妙な) 構文エラーの追加保護は、古くて寛容な JavaScript パーサーを回避することになるようですが、これが事実であることを示す参照を見つけることができないようです。別のSOの質問があり、while(1);
回避策を否定し(1を壊すことができると述べています)、フォームの別の回避策を拒否しますが、{}&&
理由を説明したり、ソースを引用したりしません。
その他の参照:
- http://code.google.com/p/fbug/issues/detail?id=369
- http://prototypejs.org/learn/json、これは JSON を
/*-secure-\n...*/