第 13 回 Admintech.jp 勉強会2008年09月30日 21時12分

ブラウザに関する話が聞けるということで第 13 回 Admintech.jp 勉強会に行ってきました。他の勉強会 (といっても私の場合は Kanasan.JS がほとんどですが) と比べると、Admintech.jp 自体が ITプロ(システム管理者やネットワークエンジニア)向けのコミュニティということもあってか、学生が少ない印象を受けました。また、参加者のノートパソコンを見渡すと、会場 (マイクロソフト大阪オフィスセミナールーム) のせいではないでしょうが近年ではまれに見る Mac 率の低さだったようです。

IE に依存した Web アプリケーションセキュリティ

はせがわようすけさんによる、IE 以外のブラウザでは問題ないが、IE では XSS につながるパターンの紹介でした。発表資料ははせがわさんの記事から参照できます。

文書の文字符号化方式を UTF-7 や US-ASCII と誤認識させることによる XSS の話が出ていましたが、HTML 4 で文字符号化方式の判定がどのように規定されているかについては「文字符号化方式判定の優先順位」@水無月ばけらのえび日記に解説があります。「常に valid な HTML を出力するようにしておけば XSS の 9 割は防げる」と聞いたこともありますし、HTTP、HTML といった標準を抑えておくことはセキュリティの面からも重要なのではないかと思います。発表にもあった IE の Content-Type 無視のように、標準に従っていてもブラウザ側の動作によって問題がおきることもありますが。

IE 8 では HTML 文字列からスクリプトなどを取り除く toStaticHTML メソッドが導入される予定ですが、IE 8 Beta 2 時点ではダイナミックプロパティ (CSS expression) による XSS を防ぎきれないといった問題があるそうです。

「レジストリに登録されていない MIME タイプ」という話がありましたが、このレジストリとは HKCR\Mime\Database\Content Type のことでしょうか? だとすると私の XP SP3 環境では application/javascript が登録されておらず、application/rss+xml は登録されているのですが、安全だ安全でないというにはまた別の基準があるのでしょうか?

WebKit の可能性

Google の及川卓也さんによる発表ですが、Google Chrome には特に触れず、WebKit の特徴と Windows でのアプリケーションへの組み込み方が主な内容でした。IE はコンポーネントが簡単に利用できますし、Firefox も Mozilla ActiveX ControlGeckoFX が公開されていますが、WebKit にはいまだそういう手軽に組み込む仕組みがほとんど存在しないそうです。

JavaScriptCore が、もともとは AST をたどって実行していたのが、SquirrelFish の導入で中間言語を用いるようになり、さらに SquirrelFish Extreme で機械語を出力するようになるなど、JavaScript エンジンがどんどんハードウェアに依存するレイヤーに近づいているというのが印象に残りました。

ここが変わった! IE 8 Beta 2

Microsoft の五寶匡郎さんによる IE 8 の紹介です。管理者向けということで IEAK の説明もありました。

IE 8 の文書表示モード

IE 8 ではブラウザモードと文書モードという二つの機構が導入されます。ブラウザモードによってユーザーエージェント文字列とバージョンベクタ (条件付きコメントで用いられる) が変化し、文書モードによって CSS や DOM の解釈が変化するようです。ブラウザモードには次の三つがあります。

ブラウザモード ユーザーエージェント文字列 バージョンベクタ
IE 8 モード Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; ...) 8.0
IE 8 互換表示モード Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; ...) 7.0
IE 7 モード Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; ...) 7.0

文書モードには IE 8 標準モード、IE 7 標準モード、IE 5 モード (Quirks モード) の三つがあります。X-UA-Compatible の指定によるブラウザモード、文書モードの変化は次のようになると私は理解しました。

X-UA-Compatible ブラウザモード 文書モード
指定なし IE 8 モード 文書型宣言によって IE 8 標準モードまたは IE 5 モード
IE=8 IE 8 モード IE 8 標準モード
IE=7 IE 8 互換表示モード IE 7 標準モード
IE=5 IE 8 モード IE 5 モード
IE=EmulateIE8 IE 8 モード 文書型宣言によって IE 8 標準モードまたは IE 5 モード
IE=EmulateIE7 IE 8 互換表示モード 文書型宣言によって IE 7 標準モードまたは IE 5 モード

ただし、以下のサンプルで実際に試してみると、開発者ツールから明示的に選択しない限り、IE 8 互換表示モードでもユーザーエージェント文字列は MSIE 8.0 となります。hxxk.jp - DOCTYPE スイッチについてのまとめと一覧表も参考にしてください。なお、ブラウザモードのうち IE 7 モードは、開発者ツールから選択した場合のみ実行できます。

  1. X-UA-Compatible の指定なし
  2. X-UA-Compatible の指定なし、文書型宣言なし
  3. X-UA-Compatible: IE=8
  4. X-UA-Compatible: IE=8、文書型宣言なし
  5. X-UA-Compatible: IE=7
  6. X-UA-Compatible: IE=7、文書型宣言なし
  7. X-UA-Compatible: IE=5
  8. X-UA-Compatible: IE=5、文書型宣言なし
  9. X-UA-Compatible: IE=EmulateIE8
  10. X-UA-Compatible: IE=EmulateIE8、文書型宣言なし
  11. X-UA-Compatible: IE=EmulateIE7
  12. X-UA-Compatible: IE=EmulateIE7、文書型宣言なし

また、文書モードが IE 7 標準モードや IE 5 モードだからといって、動作が完全に IE 7 や IE 5 と同じになるわけではありません。ActiveX コントロールのサポート状況や JScript エンジンなどは IE 8 と同じままです。

その他 IE 8 に関する話

「まず標準準拠で作って Firefox や Safari で確認し、それから IE でおかしいところを CSS ハックで直す」という開発者の言葉に衝撃を受け、開発者の支持がないブラウザは廃れるとの思いで IE 8 での標準準拠路線を進めてこられたそうです。利用者のニーズと開発者のニーズ、過去の IE との互換性とほかのブラウザとの相互運用性など、異なる方向性を両立させるべく苦労を重ねているようでした。

インストールやアンインストールではまった人が多かったようです。インストール/アンインストール時の問題点についてはリリースノートに書かれているので、ちゃんとリリースノートを読みましょうとのことでした。

ツールバー上で右クリックして "Customize" → "Show Stop and Refresh Buttons before Address Bar" (英語版の場合) を選択すると、中止ボタンと更新ボタンが戻る / 進むボタンの右側、アドレスバーの左側に移動します。これで IE 6 以前のボタン配置になれている人も安心ですね。

Microsoft TechNetMicrosoft Connect などを通じてどんどんフィードバックしてほしいとのことでした。

ユーザーエージェント文字列に Trident/4.0 というのが含まれていますが、この 4.0 という数字はどこから来たのでしょう? Wikipedia の Trident の項によると IE 8 に使われているのは Trident VI だそうですが。

ある機能を追加するかどうかは、それがどのように使われるかを熟考して決めるようです。SVG も開発者からの要望は強く、いったんは IE 7 の追加機能リストに入ったものの、それが本当に必要かという議論になり見送られたとか。逆に言うと、Microsoft は想定外の使われ方をすること自体を想定していないのかなと思いました。

Mozilla からみて IE 8 に期待すること ~ 標準化とセキュリティー

もじら組の himorin さんによる IE 8 への要望。せっかくアドレスバーでドメイン名を強調表示するようになったのに、ステータスバーのリンク先表示でドメイン名が強調表示されないのは片手落ちだといった意見を出していました。各種プラグインを一括アップデートできるようにしてほしいという話から議論が膨らんで、Windows Update に各種ブラウザの更新通知も含めるべきだとかいった話題に。

勉強会のレポート集

ところで、こういった勉強会のレポートをまとめて読みたいと思うのは私だけでしょうか。Kanasan.JS の場合は参加者のブログ記事一覧に各自が登録していくことになっているので手軽に読めますが、一般にはそうでもありません。独立したページではなくても、主催者のブログにトラックバックすることを呼びかけるなどしてもらえるといいなと思います。Admintech.jp に関してははてなブックマークの「admintech.jp」タグを含む新着エントリーを追いかけるという手もありそうですが。第 13 回 Admintech.jp 勉強会アンケート結果の最後にまとめられていました。

コメント

_ はせがわ ― 2008年10月02日 13時54分

レポートありがとうございます。
レジストリは上記箇所で合ってます。application/javascriptは…あれ?手元の1台は登録されてるけど、新品のVMだと登録されていない…。ちょっと調べます。application/rss+xmlが登録されるのはIE7以降ですね。IE6は未対応です。
レポートのトラックバック受付については、団体としての主催なので、個人としてのブログでは集めたくないなと思っていたのですが、要望があったということでちょっと考えます。

_ nanto_vi ― 2008年10月03日 18時48分

発表お疲れ様でした。
application/rss+xmlがあるのはIE 7でフィードに対応した影響でしたか。フォローありがとうございます。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
「ハイパーテキストマークアップ言語」をアルファベット4文字でいうと?

コメント:

トラックバック

このエントリのトラックバックURL: http://nanto.asablo.jp/blog/2008/09/30/3792686/tb