HTTPリクエストヘッダが操作できてしまうのは誰が悪いのか

暗黙的に形成する事実標準の話と回避策の話を混同してはいけない(高木浩光@自宅の日記)
を読んで、なんか、いまいちわからずな感じ。Javaアプレットは良くて、Flashはよく無いというのが・・・。
特にRFCにクロスドメインでどうとか見当たらないし、RefererとリクエスURIドメインが異なる場合、各ヘッダを特定の形にしなければならない、ということも見当たらないし*1

規格に沿ってない、という話をするのであれば、「HTTPリクエストヘッダをおかしな値で送ってしまうブラウザが悪い」、というところまでしかいえない気がする。規格を守るなら、プラグインが変な値出しても整形すべきだと思う。


個人的には、HTTPリクエストヘッダをいじったリクエストを、ドメインを越えて送信する必要があるのか疑問なので(パラメータでやればいいし)、ドメイン越えaddRequestHeader()は「イラナイ」機能だと思う。

だけど、結局のところ、どこにもそーいった資料もないので、「イケナイ」機能とは言えないと思う。

また、過去にHTTPリクエストヘッダ操作によるXSS等の、第3者にヘッダ操作をされない限り問題にならないはずのものも結構脆弱性として報告されているようだー(from masaのメモ置き場)*2
Expectヘッダのモノだけでもたくさんある。もし、「Expectヘッダは本来操作されるべきもので無いので直しません」ってなってたら、ヘッダ操作はダメなものとして位置付けられたかもしれない。今は、どっちなの?ってだれもわかって無い状態だと思う。

また、これに対しての、Flashの先日の修正が微妙だ。「User-Agent」、「Host」、「Referer」、「Cookie」の各ヘッダに加えて「Expect」ヘッダもブラックリスト入りした。じゃあ、他のヘッダは?「Accept-Language」や「Content-Type」で動くXSSがあるけどそれは??何がさせたいのかをはっきりして、ホワイトリストにして、任意のヘッダではなく用意された形式を選ぶようにしたらいいのに。

現段階での個人的な思いは

  1. ドメイン越えヘッダ操作はできていいのか悪いのかわからない
  2. ドメイン越えヘッダ操作が問題になるなら、ブラウザが対応すべきかもしらない
  3. ドメイン越えaddRequestHeader()はイラナイ
  4. FlashはaddRequestHeader()で何がさせたいのかわからない
  5. Webアプリ,サーバ側は直して(ヘッダ操作を想定して)おいたほうが安全*3

11/20追記:
ブックマークのとこに、高木さんが「JavaFlashの違いを書いたのに、それが読解できないんじゃお話になりませんな。」と書いているけど、JavaFlashの違いと、HTTPの規格の話は関係ないと思うのですが・・・。
RFCとか持ち出さずに、問題が起きるからダメ、問題が起きないからOK、という風に始めから議論するならばそれはそれでいいと思います。

*1:あったらおせーてください

*2:ただ、ここで検索に引っ掛かってる「Refererヘッダ」系のは、「htttp://example.com/?"><script>alert()</script>」等のスクリプトを含んだ正規のRefererでも問題になるのでちょっと別かも、なので注意。

*3:Flash Playerなんて更新しないだろうし

Flash Player ヘルプがどうかと思う件について。

これを見てほしいのです。


これは、www.macromedia.com上のFlash Player ヘルプを表示したトコです。その中にFlashがあるのですが・・・。

訪問済みWebサイトなるものが、Flashの中に埋め込まれてるのです*1。そんなことしていいって言った覚えないのに。

Flashってこーゆーことできるん?これ、なんか制限かかってるのかな?かかってたとしても、www.macromedia.comはOKとかそんなのは無しかと。

ちなみにここです→Flash Player ヘルプ [Web サイトのプライバシー設定] パネル
これを踏んで、情報収集された??とか不安になっても私は知りませんので〜。

*1:ちなみにwww.plugoo.com, www.vottie.comは、たぶん"でざいんめーる"へのリファラをたどったのだと思う。