JSON はみんなが思ってるほど安全ではない

JSON はみんなが思ってるほど安全ではない

2007/03/08 9:33am

del.icio.us 経由で今日読んだ記事。

JSON is not as safe as people think it is - Joe Walker’s Blog http://getahead.org/blog/joe/2007/03/05/ json_is_not_as_safe_as_people_think_it_is.html

script による CSRF と JavaScript のハック的手法を組み合わせることで、たとえログイン必須にしている JSON データであっても盗まれるかもしれない、という話。

たとえば、

<script type='text/javascript' src='http://example.com/jsonservice'></script>

という script で JSON を読み込めたとする。

このままだと読み込んだ JSON のデータが評価されるだけで、どんなコードも実行されないのでそれほど問題にはならない (評価された JSON のデータはどんな変数にも代入されてないので参照できない)。

しかし、元記事に紹介されている方法で、たとえば Array のコンストラクタを再定義してやると、JSON が評価されるときに 任意のコード(どこかにデータを送信するなど)を実行できてしまう。