Javascript関連情報

更新日:2007年04月27日

YUI+Google AJAX Feed API

YUIによるアニメーションエフェクトとGoogle AJAX Feed APIを組み合わせて、別ドメインからのRSSフィード読み込みを試してみます。


YUI+Google AJAX Feed API


キャッシュ

GAF APIでは、読み込みたいRSSのuRLを次のようにしてFeedメソッドの引数で指定します。
new google.feeds.Feed(
  "http://...../rss/index.xml"
);
このとき、GoogleのGAF用サーバーを経由したデータは、通常のプロクシサーバーと同じようにキャッシュされています。 したがって、一度キャッシュされたデータは、次にGoogle側でリフレッシュされるまでの間は、もとのRSSが書き換わっていても反映しないことになります。

もし、これをどうしても強制的に書き換えたいというような場合には、URLクエリにダミーを追加する方法なども有効です。(下記では、ダミークエリ「?123」をURLに追記しています。)
new google.feeds.Feed(
  "http://...../rss/index.xml?123"
);
JavaScriptでは、現在時間をダミーとして追記することで自動的にダミー文字列を作成する、次のような「キャッシュ騙し」も使われます。
new google.feeds.Feed(
  "http://...../rss/index.xml"+"?"+(new Date()).getTime()
);
ただし、これらのテクニックは、あまり強制読み込み頻度が多いとキャッシュが過剰に保存されすぎるので注意が必要です。

GAF APIのキャッシュについては、Caching Behavior and Freshness もご参照ください。

セキュリティ

Ajaxでは、一般的に肝であるXMLHttpRequestオブジェクトの Same-Origin Policy (SOP セイムオリジンポリシー) によって 別ドメインへのアクセスが禁じられています。しかし、 GAF APIは、一般的なAjaxが禁止している別ドメインへのアクセスを簡単に可能にします。

このことは、当然セキュリティの心配を発生させます。

そこで、Googleでは、この件についての考え方を提示しています。具体的には、Security Notesにありますが、たとえば、GAF APIは、個人情報を相手側RSSホストへ送らないこと、匿名でフィードをダウンロードすること、 、GAF APIが、既に公的な情報であるフィードへのアクセスしか提供しないことなどが書かれていますが、実際に使ってみると、いくつかの技が仕込まれていることがわかります。

たとえば、この手のセキュリティで真っ先に心配になる「クロスサイトスクリプティング」ですが、仮に、RSSの<description>要素にSCRIPTタグが書かれていたとしても、Google サーバーはそれを無効化してから返すようになっているようです。筆者が確認したものでは、次のような処理が行われていました。

<a href="javascript:alert('Aタグにscript')">Aタグにscript</a>
    ↓
<a href="javascript:void(0)">Aタグにscript</a>
<script>alert('スクリプトタグ')</script>
    ↓
content内のスクリプト要素を丸ごと削除
更に、GAF APIのサンプルを見ると、受信後の処理ではoj.innerHTMLを使わず、明示的にcreateTextNodeで文字化してから利用しているようにも見受けられます。
div.appendChild(document.createTextNode(entry.title));
もし、ここでoj.innerHTMLなどを使うと、思いがけないスクリプトが自動で動作してしまう可能性もありますので、 このように、受信したデータの型を明示的に利用するのは、慎重な受信方法だと思います。

とはいえ、 GAF APIに限らず、Google Mapsや流行のWeb広告などを含めて、その他のどんなWebサービスでもそうですが、SCRIPT要素で別ドメインのWebサービスを読み込むことは、そのWebサービスの管理者を信用して自分のページのdocument管理権限を共有するのとほとんど同じことになります。

それらのWebサービスの管理者は、APIを張り込まれたページすべてを書き換えることさえもできる権限を手に入れます(テスト例)。 したがって、それらのWebサービスをパスワード入力のあるページなどへ貼ってはいけない、ということは基本です。 パスワード入力のあるページなどへ貼ると、そのページ管理者の知らないうちに、パスワードを盗まれる危険があるからです。 ゆえに、個人情報保護法上の責任を有する企業などでは、特に、慎重の上にも慎重に検討することが必要です。

いろいろな便利なWebサービスが今後も次々と生まれてくると思いますし、その有用な部分を積極的に利用することを拒否していたのでは 大事な潮流に乗り遅れることもありますが、とはいえ、セキュリティに関しては、どんなケースでも、眉に唾しつつ、慎重に作業する心構えが大事だと思います。

次回は、再度YUIアニメーションのテストに戻ります。

1 2 3
  • 印刷する
  • ブックマークする
  • 携帯に送る
  • ブログに書く

あわせて読みたい

この記事の担当ガイド

写真

高橋 登史朗

Javascriptをはじめ、Ajax、jQueryの著書多数のガイドが、何かと最近騒がれているJa…

続きを読む

All About Good Answers Topics

回答募集中のトピック(お題)

回答できるものを探そう Good Anwsersトップへ
今なら最大10,000円の回答キャンペーン実施中!

ビジネススタイルは、スーツの着こなしのルールを遵守しつつ、小物で個性を打ち出すのがセオリー。だからこそ、比較的自由度の高いバッグが重要だ。そこで今回は、「ブリーフケース」と「トートバッグ」という今おすすめのタイプから15点ずつアイテムをピックアップ。品質や素材が秀でているだけでなく、機能面も優れる才色兼備な逸品を厳選した。バッグを新調するだけで、不思議なほど心躍る。

人気Javascriptランキング

Powered by 価格.com

おすすめ記事

メルマガ登録

【デジタルメルマガ】オトナのオトコなら知っておきたい、PCやデジモノに関する情報をお届けします。

All About ウェブマガジン

男性向け

男のカバン完全カタログ

女性向け

パンの美味しい、素敵カフェ

All About モバイル

QRコード

All Aboutがケータイで読める!

オススメ記事をメールでチェック