Internet Explorer 7 での国際ドメイン名のサポート

Eric Lawrence

Microsoft Corporation

January 31, 2006

日本語版最終更新日 2006 年 3 月 16 日

注: この情報は暫定的なものであり、変更されることがあります。

はじめに

インターネットを真に国際的なものにするには、ユーザーの母国語で書かれた URL にナビゲートするための、ブラウザによるサポートが必要不可欠です。Internet Explorer 7 は、世界のすべての国々の、Unicode 文字で構成された国際ドメイン名 (IDN) へのナビゲーションを許可します。IDN は、"Punycode" として知られる標準化技法に依存しています。この "Punycode" によって Unicode ドメイン名は、グローバル DNS システムで許可される ASCII 文字にエンコードされます。

この変更は、従来の URL の互換性に影響を及ぼします。その理由に、初期のバージョンの Internet Explorer がドメイン名を ANSI や UTF-8 などのさまざまな形式にエンコードしていることがあげられます。

Unicode によく似た文字がもたらすセキュリティの脅威を軽減するために、Internet Explorer は、既存の IDN 名をエンコード形式で提供し、スプーフィング攻撃を防ぎます。

この記事では、この機能による互換性への影響に対処する方法と、Internet Explorer 7 で正しくナビゲートできる URL を生成する方法について説明します。

互換性への影響について

エンド ユーザーおよびネットワーク管理者

Internet Explorer ユーザーは、以下のような、IDN サポートによる互換性への影響を経験する可能性があります。

  • 状況 : Internet Explorer に、"xn--" で始まる、エンコードされた形式の Web アドレスが表示され、情報バーが示されます。情報バーには、"この Web アドレスには、現在の言語設定では表示できない文字または記号が含まれています。" というメッセージが示されます。

    原因 : ドメイン名の誤解によってユーザーがスプーフィングされるのを防ぐために、コンテンツで使用される言語の、ユーザーのリストで使用されていない文字がドメイン名に含まれるときは、Internet Explorer はエンコードされた形式を表示します。

    ASCII 文字セットでは、見た目上非常に紛らわしいドメイン名を用いる攻撃 (「ホモグラフ (同形異義語) 攻撃」とも呼ばれる) が可能です (通常の例は、www.example.com に対する www.examp1e.com など。この例では、2 つ目のURL で文字 L の代わりに1 が使用されている)。しかし IDN では、文字セットが世界中の言語の数十から数千、数万の文字に拡大されるため、スプーフィング攻撃の危険性が高くなります。

    回避策 : 情報バーをクリックするか [ ツール ] | [ インターネット   オプション ] を選択し、次に [全般 ] タブの [言語] ボタンをクリックして、設定された一連の言語に他の言語を追加することができます。設定された言語の順序が重要なため、主に使用するコンテンツの言語が一覧の最初に表示されるようにしてください。

    ネットワーク管理者は、HKLM または HKCU の \Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings で DisableIDNPrompt という DWORD を 1 に設定して、情報バーを無効にすることができます。

  • 状況 : ドメイン名に Unicode 文字を含むイントラネット Web サイトにナビゲートする際、ブラウザがサイトを検出できず、HTTP/404 エラー ページが表示されることがあります。

    原因 : 以前のバージョンの Internet Explorer では、ASCII 以外の文字を含むイントラネット ドメイン名を表すときに、別の URL 形式が使用されていました。一部の環境では、新しい IDN Punycode 標準がまだサポートされていない可能性があります。その場合は、IDN Punycode アドレス形式を使用してもサイトに到達できません。

    回避策 : インターネット コントロール パネルを使用して、Unicode ドメイン名を扱える IE6 に戻すことができます。[ツール | インターネット   オプション] を選択します。[詳細設定] タブで、[インターナショナル] セクションにスクロールします。ターゲット ドメインへのアクセスにプロキシ サーバーを使用するかどうかに応じて、[ IDN サーバー名を送信する ] または [e プロキシ接続を通じて IDN サーバー名を送信する]、あるいはその両方のチェックをはずします。

    ネットワーク管理者は、HKLM または HKCU の \Software\Microsoft\Windows\CurrentVersion\Internet Settings で EnablePunycode という DWORD を設定し、Punycode を無効にして IE6 の動作に戻すことができます。

    • 値が 0 の場合、Punycode は使用されません。

    • 値が 1 の場合、Punycode は、配信元サーバーと直接通信するときに使用されます。

    • 値が 2 の場合、Punycode は、プロキシ サーバーと通信するときに使用されます。

    • 値が 3 の場合 (既定)、Punycode は、配信元サーバーとプロキシ サーバーの両方と通信するときに使用されます。

Web サイト開発者

Web サイト開発者は、以下のような、IDN サポートによる互換性への影響を経験する可能性があります。

  • 状況 : Internet Explorer に、"xn--" で始まる、エンコードされた形式の Web アドレスが表示され、情報バーが示されます。情報バーには、"この Web アドレスには、現在の言語設定では表示できない文字または記号が含まれています。" というメッセージが示されます。

    原因 : エンコードされたアドレスは、エンコードされていないアドレスと見分けづらく、この機能によって詐欺師などの犯罪者は、ユーザーを騙して機密情報を盗み出そうとするフィッシング攻撃を行うことが難しくなります。

    従来の ASCII ドメイン名文字セットでは、見た目上非常に紛らわしいドメイン名を用いる攻撃 (「ホモグラフ (同形異義語) 攻撃」とも呼ばれる) が可能です (通常の例は、www.example.com に対する www.examp1e.com など)。しかし IDN では、文字セットが世界中の言語の数十から数千、数万の文字に拡大されるため、スプーフィング攻撃の危険性が高くなります。

    Internet Explorer では、ユーザーをスプーフィング攻撃から守るために、許可される IDN アドレスを厳しく制限しています。

    以下のいずれかの場合、ドメイン名はエンコードされた形式で表示されます。

    • ドメイン名に、ユーザーが選択した言語以外の文字が含まれる。既存のサイトとの互換性を保つために、ASCII のみのラベルは常に許可されます。

    • ドメイン名に、言語の一部でない文字が含まれている。

    • ラベルのいずれかで、1 つの言語では一緒に表示されない混合のスクリプトが含まれている。たとえば、1 つのラベル内では、ギリシャ文字とキリル文字を併用することはできません(ラベルとは、点で区切られた、ドメイン名のセグメントのことです。www.microsoft.com には "www"、"microsoft"、"com" という 3 つのラベルが含まれています)。この制限により、よく知られているドメイン名と同一のドメイン名を登録する詐欺師などの犯罪者からの攻撃を防ぐことができます。ただし、ラテン文字 “a” が表示上は同一のキリル文字 “a” に置き換えられている場合などを除きます。

    回避策 : ドメイン名の 1 つのラベル内に、複数の言語の文字が含まれていないことを確認します。複数の言語を使用する必要がある場合は、言語ごとに 1 つのラベルを使用してください。

    対象とする読者がブラウザで設定している可能性の高い言語の文字を使ってドメイン名が書かれていることを確認してください。

    多くの Web サイト所有者は、IDN ドメイン名を ASCII ベースのドメイン名へのリダイレクト先として使用します。ASCII の URL はすべてのバージョンのブラウザで到達可能であり、そのようなドメイン名の場合、どのロケールでも情報バーは表示されません。

  • 状況 : DHTML オブジェクトで URL プロパティを取得するスクリプトを使用しているときに、URL が予期せず Unicode で返されることがあります。

    原因 : URL プロパティは、オブジェクト モデル プロパティにアサインされたときに Unicode 形式に変換されます。これは特に、コードによって URL の文字列とスクリプト コード内の他の場所の文字列との比較が試みられた場合に問題になります。

    回避策 : URL 処理ルーチンがドメイン名エンコーディングの違いを処理するために堅牢に作成されていることを確認します。特に、JScript ストリングと URL とを比較するときに Punycode ではなく Unicode が使用されていることを確認してください。URL 処理コードが正しい条件で作成されていることを確認するために、予期されるすべてのブラウザ言語の組み合わせでスクリプトをテストしてください。

アプリケーション開発者

アプリケーション開発者は、以下のような、IDN サポートによる互換性への影響を経験する可能性があります。

  • 状況 : WININET を使用して、ドメイン名に Unicode 文字を持つ Web サイトに接続すると、ネットワーク コンポーネントがサイトに接続できない場合があります。

    原因 : 以前のバージョンの WININET では、ASCII 以外の文字を含むイントラネット ドメイン名を表すときに別の URL 形式が使用されていました。一部の環境では、新しい IDN Punycode 標準がまだサポートされていない可能性があります。その場合は、IDN Punycode アドレス形式を使用してもサイトに到達できません。

    回避策 : HTTP 要求を出す前に、InternetSetOption (英語) 機能を使って IDN を設定します。

    • dwIDNSettings が 0 に設定されているときは、Punycode は使用されません。

    • 値が 1 の場合、Punycode は、配信元サーバーと直接通信するときに使用されます。

    • 値が 2 の場合、Punycode は、プロキシ サーバーと通信するときに使用されます。

    • 値が 3 の場合 (既定)、Punycode は、配信元サーバーとプロキシ サーバーの両方と通信するときに使用されます。

  • 状況 : DHTML オブジェクトで URL プロパティを取り出すためにコードを使用すると、ユーザーの設定によっては、URL が 予期せずに PunyCode または Unicode で返される可能性があります。

    原因 : Internet Explorer の UI でのスプーフィング攻撃を防ぐために、URL プロパティは、オブジェクト モデル プロパティに割り当てられたときの表示形式に変換されます。これは特に、コードによって URL の文字列とコード内の他の場所の文字列との比較が試みられた場合に問題になります。

    回避策 : URL 処理ルーチンがドメイン名エンコーディングの違いを処理するために堅牢に作成されていることを確認します。特に、文字列と URL とを比較するときに Punycode ではなく Unicode が使用されていることを確認してください。URL 処理コードが正しい条件で作成されていることを確認するために、予期されるすべてのブラウザ言語の組み合わせでコードをテストしてください。ネイティブ コード アプリケーションを作成するときは、IURI API (英語) を使用し、URL コンポーネントを解析してください。

IDN サポートを利用する方法

エンド ユーザー
  • Internet Explorer は現在、世界のすべての国々の、Unicode 文字で書かれた国際ドメイン名 (IDN) へのナビゲーションを許可します。

  • 国際ドメイン名にナビゲートする必要がない場合は、インターネット コントロール パネルの [詳細設定] タブにある [インターナショナル] セクションで [エンコードされたアドレスを常に表示する] オプションを設定し、セキュリティを強化することができます。このオプションを設定すると、すべての IDN Web アドレスが、エンコードされた形式で表示されます。

ネットワーク管理者
  • ユーザーが国際ドメイン名へのナビゲートを必要としない場合は、HKLM または HKCU で \Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings の ShowPunycode という DWORD を 1 に設定し、すべての IDN Web アドレスを強制的にエンコードされた形式で表示させることができます。

Web サイト開発者
  • 国際ドメイン名を Punycode の形式にすると、プレリリース版の IE7 のユーザーは自分のサイトに確実にナビゲートすることができます。Internet Explorer 7 では、このようなリンクは、ユーザーが設定した表示言語で許可される文字であれば Unicode で表示されます。

アプリケーション開発者
  • Internet Explorer での IDN サポートに加え、MSDN から入手できる他の IDN リソース (英語) も利用できます。

    Eric Lawrence は Internet Explorer チームのプログラム マネージャです。

表示: