連載
» 2009年10月14日 00時00分 公開

教科書に載らないWebアプリケーションセキュリティ(5):[さらに気になる]JSONの守り方 (3/3)

[はせがわようすけ,ネットエージェント株式会社]
前のページへ 1|2|3       

XMLHttpRequest Level 2、XDomainRequest利用の注意点は

 XMLHttpRequest Level 2、XDomainRequestの両方に共通する注意点として、以下のようなものがあります。

●Cookie は送信されない

 上記の例で、事前にexample.comからCookieが発行されていたとしても、XMLHttpRequest Level 2、XDomainRequestを使ってクロスドメインでリクエストを発行する場合には、Cookieは送信されません。

●Originリクエストヘッダが付加される

 XMLHttpRequest Level 2、XDomainRequestによるリクエストでは、そのリクエストがどこから送出されたのかを識別するOriginヘッダが付加されます。例えば、上記のXDomainRequest の例では以下のようなリクエストヘッダとなります。

GET /data.txt HTTP/1.1
Origin: http://example.jp
Host: example.com

 上記の例では、レスポンスとしてテキストデータを返却していますが、ここでも忘れてはならないのはIEのContent-Type無視によるXSSです。

 このテキストデータ(この例ではhttp://example.com/data.txt)に直接IEでアクセスした場合に、データ内にHTMLの断片が含まれている場合には、IEがファイルタイプをHTMLと判断しXSSが発生する可能性があります。これを避けるために

  • サーバ側では、リクエストにOriginヘッダが付加されているかを確認し、Originヘッダがある場合のみXMLHttpRequest Level 2あるいはXDomainRequestからのリクエストであると判断して正しい応答を返す
  • サーバ側では“GET”ではなく“POST”のみ受け入れる

のような対策が必要となります。

 このように、XMLHttpRequest Level 2、XDomainRequest を利用すると、JSONPのような不自然さを感じることなくクロスドメインでの通信が簡単に実現できます。これ以外にも、ブラウザによってはCross-document Messagingのような通信方法も実装されています。いずれも新しい技術であり、今後の普及に注目です。

 より詳細な情報に関しては、下記のリファレンスを参考にしてください。

関連リンク:
Cross-Origin Resource Sharing
http://www.w3.org/TR/cors/
XMLHttpRequest Level 2
http://www.w3.org/TR/XMLHttpRequest2/
XDomainRequest Object
http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx
HTML5 8.2 Cross-document messaging
http://dev.w3.org/html5/spec/Overview.html#crossDocumentMessages
An Introduction to Cross Document Messaging in Internet Explorer 8
http://msdn.microsoft.com/en-us/library/cc511311(VS.85).aspx

著者紹介

はせがわようすけ

ネットエージェント株式会社



前のページへ 1|2|3       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。