GoogleのJSON(モドキ)の先頭にwhile(1); がつく理由

これはクロスサイト・リクエスト・フォージェリ対策。

違うよ!全然違うよ!

攻撃者の作成した罠ページにてJSONを<script src="target.json">みたいに読み込んで、ゴニョゴニョやることでJSON内の機密情報に攻撃者がアクセス可能というのは合ってるけど、それを「クロスサイト・リクエスト・フォージェリ」とは言わない。無理に何か名前をつけて呼ぶとすれば、「JSON Hijacking」という俗称や、あるいは単純にクロスサイトでの情報漏えい、程度ですかね。

ちなみに、ArrayコンストラクタやObjectでのアクセサを定義してJSONをJSとして読み込んで内部にアクセスする手法は、現在のところ公にされているところでは古いAndroid端末でのみ有効で、それ以外では通用しません。
このあたりの対策は

が非常によくまとまってます。

個人的には、while(1); にしろ、for(;;); にしろ、バッドノウハウすぎるのでこういう方法は他に方法がない場合やそれが引き起こす副作用*1を把握した上で覚悟して使うべき。こんなバッドノウハウ、ふつうの開発者は覚えておく必要ないです。


あと、ついでに書いておくと

悪意のあるサイトからはsame-origin policyでAjaxではアクセスできないが

これも、Ajaxから読めない理由として、いまどきはSOPで制約を受けるのではなく、CORSの仕組みに基づいて読める範囲が決まるからです。

※ malaさんにわかりにくいんじゃボケと言われてる感じなのでちょっと修正。

*1:JSON提供側はこれで盗み見を抑えられるけど、ユーザー側はブラクラになるかもしれない