Hebikuzure's Tech Memo

2013年12月11日

Mark of the Web

Filed under: Yet Another Internet Explorer Advent Calendar 2013 — hebikuzure @ 9:19 PM


この記事は “Yet Another Internet Explorer Advent Calendar 2013” の 11 日目です。


Internet Explorer にあって他のブラウザーにない機能の一つに、「セキュリティ ゾーン」があります。Internet Explore では表示するコンテンツの提供場所を「セキュリティ ゾーン」で区分し、どのセキュリティ ゾーンから提供されているかによってセキュリティ設定などの動作を変更します。セキュリティ ゾーンの詳細については別途まとめる予定ですが、まずは以下の参考資料をご覧ください。

このような動作であるため、例えばローカルのファイル システムから表示したページ、企業内などの LAN 上のサーバーから表示したページ、インターネット上のサーバーから表示したページのそれぞれで、ページの内容 (HTML や CSS、スクリプト) が全く同じであっても、表示やスクリプトの動作が異なってしまう場合があります。これは安全でない場所から提供されるコンテンツではより多くの制限を行い、信頼できる場所から提供されるコンテンツではより少ない制限で動作させるという趣旨ではありますが、Web サイト、Web アプリケーションを開発してデバッグする場合や、Web ページの動作チェックを行う場合、また色々な動作検証を行う場合には各ゾーンでの動作を調べる必要があるため、少し手間がかかることとなります。

こうした場合、実際にコンテンツを提供する場所を (例えば LAN 内のサーバーからインターネット上に公開されたサーバーに) 変更しなくとも、ページ (HTML) 内に 1行のコメントを埋め込むだけで、ページのセキュリティ ゾーンを変更できる機能があります。この機能が Mark of the Web (MOTW) です。

MOTW を埋め込んだページを表示すると、Internet Explorer は MOTW で指定されているセキュリティ ゾーンからそのページが提供されたものとして扱い、そのセキュリティ ゾーンでの設定に従ってページを表示 / 動作させます。例えば、以下の MOTW が記述されている HTML ファイルをローカル コンピューターのファイル システムから開いた場合でも、このページはインターネット上のページとして扱われ、「インターネット ゾーン」のセキュリティ設定に従って動作します。

<!– saved from url=(0023)http://www.contoso.com/ –>

image

スクリーンショットで分かるように、アドレス (URL) はローカルのファイルシステム (デスクトップ) から開いている事が確認できますが、セキュリティ ゾーンは「インターネット」 ゾーンになっています。

このように MOTW を利用すれば、実際にはローカル コンピュータ上のファイル システムから開いたファイルをインターネット ゾーンやイントラネット ゾーン上のページとして動作させる事や、イントラネット (LAN) 内の Web サーバーのページをインターネット ゾーン上のページとして動作させる事が簡単にできます。これにより、Web サイト/ Web アプリケーションの複数のゾーンでの動作確認や検証が容易になります。

セキュリティ保護のため、MOTW を利用してもより制限の多いゾーンのページをより制限の少ないゾーンのページとして扱わせる事はできません
例えばインターネット ゾーン上のページに MOTW を記述しても、イントラネット ゾーンやローカル コンピューターのページとして扱わせる事はできません。

MOTW は以下のように記述します。

  • <!– saved from url=” で開始し、1行に記述します
  • –> ” で終了します
  • url=” に続けて、以下の形式でページの提供元にしたいアドレスを示します
    (URL の文字数)URL
    ex. (0023)http://www.contoso.com/
  • MOTW は HTML ファイルの先頭から 2048バイト以内に記述する必要があります
  • MOTW は HTML ドキュメント内 (!DOCTYPE 宣言より後、</html> タグより前) に記述する必要があります
    (通常は !DOCTYPE 宣言の直後に記述します)
  • MOTW の行は CR/LF で終わっていなければなりません

このように記述された MOTW 内の URL に基づいて、Internet Explorer はページのセキュリティ ゾーンを判定します。上記の例では url=(0023)http://www.contoso.com/ と指定されているため、http://www.contoso.com/ という URL を元に「インターネット」ゾーンと判定しています。

URL の文字数については以下の注意事項があります

  • カッコ内に記述する文字数は実際の文字数 (10進数) です (文字列終端記号は考慮しません)
  • 記述した文字数が後ろに記述した URL の実際の文字数より大きい場合、MOTW は無視されます
  • 記述した文字数が後ろに記述した URL の実際の文字数より小さい場合、URL の内、記述した文字数までの部分でゾーンが判定されます
    従って、最低でも TDL まで含まれるよう文字数を数えて記述する必要があります

また具体的な URL を指定せず、以下のような記述でゾーンを指定することもできます。

  • <!– saved from url=(0014)about:internet –> ※インターネット ゾーンを指定
  • <!– saved from url=(0016)http://localhost –> ※イントラネット ゾーンを指定

なお、Internet Explore で表示中のファイルを [ファイル] メニュー – [名前を付けて保存] で保存した場合も、保存した HTML の !DOCTYPE 宣言の直後に MOTW が自動的に挿入されます。これにより、保存したファイルを Internet Explorer で開いた際、元のサーバーから提供されたページと同様のセキュリティ ゾーンで動作させる事ができます。

参考

広告

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com Blog.

%d人のブロガーが「いいね」をつけました。