メインコンテンツまでスキップ

HTML Fragment Integrity

概要

本文書は、対象要素の HTML の文字列としての完全性を保証するための形式について説明します。

用語

本文書に説明のない用語については、用語を参照してください。

  • Content Attestation (CA)

HTML Target の形式

HTML Target は次のような形式です。

{
"type": "HtmlTargetIntegrity",
"cssSelector": "<CSS セレクター>",
"integrity": "sha256-GtNUUolQVlwIkQU9JknWkwkhfdiVmHr/BOnLFFHC5jI="
}

JSON Schema

{
"title": "HTML Target",
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["HtmlTargetIntegrity"]
},
"integrity": {
"type": "string"
},
"cssSelector": {
"type": "string"
}
},
"additionalProperties": true,
"required": ["type", "integrity", "cssSelector"]
}

プロパティ

  • type: REQUIRED. Content Integrity Descriptor のタイプです。必ず HtmlTargetIntegrity でなければなりません (MUST)。
  • integrity: REQUIRED. sriString データ型 でなければなりません (MUST)。使用可能なハッシュ関数についてはハッシュアルゴリズムに準拠してください (MUST)。具体例: sha256-4HLmAAYVRClrk+eCIrI1Rlf5/IKK0+wGoYjRs9vzl7U=
  • cssSelector: REQUIRED. 必ず CSS セレクター (Selectors Level 3) でなければなりません (MUST)。
注記

CA 発行者は、ページの動的な変化によらず cssSelector がマッチする要素が変わらないように cssSelector を指定してください (RECOMMENDED)。たとえば、cssSelectorp などのタグ名だけを指定するのではなく、 #paragraphID, p.rareClassName のようにより詳細な CSS セレクターを指定してください。対象要素を安定的に一意に特定するような CSS セレクターがないときには、ページを更新して、対象要素に id 属性を指定するなどして特定しやすいようなページ設計をしてください (RECOMMENDED)。

検証プロセス

  1. cssSelector プロパティの CSS セレクターで指定した要素を検索します。対象の要素は、そのページの document のルート要素 (例えば、 HTML 文書の場合は <html> 要素) から、querySelectorAll() メソッドを使用して検索します。
    • cssSelector プロパティの構文エラーがある場合、検証失敗として扱うことがあります。(例: DOMException SyntaxError)
    • 要素が1つも見つからない場合、検証失敗として扱うことがあります。
  2. それらの要素の outerHTML 属性を使用し DOMString として対象を取得します。もし仮に要素が UTF-8 ではない場合、 WHATWG Encoding Standard に準拠した方法によって符号化します。
  3. すべての対象を UTF-8 に符号化します。もし仮に対象が複数存在する場合は、それらの内容を結合します。
  4. その結果と integrity プロパティを SRI セクション 3.3.5 に規定されている方法で検証します。
    • サポートしていないハッシュアルゴリズムの場合、検証失敗として扱うことがあります。

要素位置特定方法

cssSelector プロパティの CSS セレクターで指定した要素を検索します。