4. Origin of a URI (URIの生成元)
4. Origin of a URI (URIの生成元)
URIの生成元 (origin) は, 次のアルゴリズムによって計算される値です:
-
URIが命名権限 (naming authority) として階層的要素 (hierarchical element) を使用しない場合 ([RFC3986], セクション3.2を参照), またはURIが絶対URI (absolute URI) ではない場合, 新しいグローバル一意識別子 (globally unique identifier) を生成し, その値を返します。
注意: 同じURIに対してこのアルゴリズムを複数回実行すると, 毎回異なる値が生成される可能性があります。通常, ユーザーエージェントは, 例えばHTMLドキュメントの生成元を一度計算し, その生成元を後続のセキュリティチェックに使用します, セキュリティチェックごとに生成元を再計算するのではなく。
-
uri-schemeをURIのスキーム (scheme) コンポーネントとし, 小文字に変換します。 -
実装が
uri-schemeで指定されたプロトコルをサポートしていない場合, 新しいグローバル一意識別子を生成し, その値を返します。 -
uri-schemeが "file" の場合, 実装は実装定義の値を返すことができます (MAY)。注意: 歴史的に, ユーザーエージェントはfileスキームからのコンテンツに非常に大きな特権を付与してきました。しかし, すべてのローカルファイルにこのような広範な特権を付与すると, 特権昇格攻撃 (privilege escalation attack) につながる可能性があります。一部のユーザーエージェントは, ローカルファイルにディレクトリベースの特権を付与することに成功していますが, このアプローチは広く採用されていません。他のユーザーエージェントは, 各ファイルURIにグローバル一意識別子を使用します, これが最も安全なオプションです。
-
uri-hostをURIのホスト (host) コンポーネントとし, 小文字に変換します ([RFC4790]で定義されている i;ascii-casemap 照合規則を使用)。注意: このドキュメントは, ユーザーエージェントがURIを構築する際に国際化ドメイン名アプリケーション (Internationalizing Domain Names in Applications, IDNA) 処理と検証を実行することを前提としています。特に, このドキュメントは, ユーザーエージェントが非ASCIIラベルをそれぞれ対応するAラベル (A-label) に既に変換しているため,
uri-hostにはLDHラベル (LDH label) のみが含まれることを前提としています ([RFC5890]を参照)。このため, 生成元ベースのセキュリティポリシーは, ユーザーエージェントが採用するIDNAアルゴリズムに敏感です。詳細については, セクション8.4を参照してください。 -
URIにポート (port) コンポーネントがない場合:
uri-portをuri-schemeで指定されたプロトコルのデフォルトポートとします。
それ以外の場合:
uri-portをURIのポートコンポーネントとします。
-
3つ組
(uri-scheme, uri-host, uri-port)を返します。