JSONの解析はwindow.eval()なのか
jQueryでgetJSON()とかするとレスポンスをJSON形式で返してくれますが、このときに使用されるJSON解析ロジックは「window.eval()」だったりします。(jQuery1.3.2で確認)
たとえば、以下のようなjsonデータをgetJSON()すると、JavaScriptとして実行されてしまいます。
[alert( "!!" )]
getJSONするコード。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="./jquery-1.3.2.js"></script> <script type="text/javascript"> $(function(){ $.getJSON( "./test.json", "", function(result){ $("#stdout").append( "completed.<br/>" ); }); }); </script> </head> <body> <div id="stdout" ><div> </body> </html>
実行結果はこちら
んー、これはちと怖いな。安全でない可能性があるデータを解析する場合は注意が必要ですね。