blog/2010-06-04


Total: 1158 / Today: 1 / Yesterday: 0

ajaxで困ったこと

DojoだろうがjQueryだろうが共通して困った問題がある。ajaxで読み込んだHTMLに<script>タグが含まれていると実行されてしまうところだ。しかも、立ちが悪いことにIEでは実行される時とされないときがある。中途半端に実行されるため非常に困る。実行されるならDijitやjQueryUIなどでフォームを拡張するときにajaxで読み込む処理にスクリプトを再実行する処理が不要になるため便利だが、ブラウザ依存の場合そういう使い方ができない。

というか、ajaxでページを非同期読み込みする時点で、DOM構造が変わってしまっているためID属性で指定でもしない限りメリットはなさそうだが・・・。いずれにしても、ajaxで読み込んだあとのDOM構造まで考えた上で設計しなければならないので使いかっては悪いだろう。(そんな設計するくらいなら、自分は、表示部分と、表示された時実行される関数を入れたjsonpを使う!)そうなると、この仕様は不便である。例えば、MabiAssistでは、rssを読み込む処理で読み込むRSSにscriptタグが含まれていてひどい目にあった。

フレームワークで簡単に非同期通信ができるようになった反面、もしも読み込み先のページに悪意のあるスクリプトタグが含まれていた場合、XSSの脆弱性の原因になるのではないだろうか?安易にajaxを使うのは考えものである。ここまで考えているプログラマーはいるのだろうか?Googleで検索かけてもあまりにも情報がヒットしなさすぎるなだけに不安である。

prototype.jsにはstripScripts()という関数が用意されているらしいがそれだけのために別のフレームワーク使うのはどうかと思うし、そもそもprototype.jsは嫌いである。


Last Modified: 2010-06-04 20:45:00