TwitterGadgetにつながらなくて焦ったでござるの巻

連休中の話なので、1週間ぐらい前ですが。

Twitterに投稿するのに、PCからはTwitterGadgetiGoogle版を、iPhoneではEchofon for iPhoneを使っています。で、今回はTwitterGadgetのお話。


いつも通りにPCに向かってゴロ×2してたある日のこと、そういえばiGoogle上のTwitterGadgetが動作してねーなーということに気づきました。まぁ、Webサービスは落ちることも当然考慮に入れているのでそこまで深刻に考えてはいなかったのですが、数日経ってもまだつながっていない様子。ぐぐってみても、そんな現象に誰も陥っていないみたいなので、これはローカル環境の問題かと思って原因究明に。

とにもかくにも、Firebugsを使ってJavaScriptのエラーが出ていないかを確認。すると、何か変なところでパースエラーが出てますね。というか、明らかにJavaScriptのソースではないところまでパース対象に入っている模様。

で思い出したのが、ちょっと前にTwitterで「<script>」を含んだ投稿したな〜と。これが何か悪さしてそうな予感。追っていくと…案の定scriptタグがそのまま読み込まれている箇所がありました。[options > User Statistics]の部分。

f:id:ikikko:20090926222340p:image

↑をクリックすると、ユーザ情報が表示されます。この中に直前の投稿情報を含んでいるのですが、ここでHTMLタグがエスケープされていない模様。なお、下部に出てくる投稿のリストはちゃんとエスケープされています。

f:id:ikikko:20090926222341p:image

ちなみに、user statisticsには一つ前の投稿だけしか保持していないので、いったん発言しなおしてやれば上書きされます。


ということで、TwitterGadgetを使う際は、XSS対策漏れがあるので気をつけましょう。一応、作者にはこういったバグがありますよということを(拙い英語で)メールしてます。なので、近いうちに修正されることを期待しつつ… とか思いつつエントリポストする前にもう一回試してみたら、テスト用に埋め込んでいたalert文が表示されなくなった。たった今修正されている最中なのかな・・・??

あと、今回の現象に限らす、不幸にもJavaScriptエラーでTwitterGadgetが読み込まれなくなったとき*1、いったんログオフしたかったら↓のリンクをクリックしてみてください。

http://www.twittergadget.com/gadget.asp?dc=1

*1:最初、読み込まれなくなりました。というのは、scriptの閉じタグがなかったために、Twitterの投稿の内部テキストからscriptのパースが始まったためです。