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)。たとえば、cssSelector
に p
などのタグ名だけを指定するのではなく、 #paragraphID
, p.rareClassName
のようにより詳細な CSS セレクターを指定してください。対象要素を安定的に一意に特定するような CSS セレクターがないときには、ページを更新して、対象要素に id 属性を指定するなどして特定しやすいようなページ設計をしてください (RECOMMENDED)。
検証プロセス
cssSelector
プロパティの CSS セレクターで指定した要素を検索します。対象の要素は、そのページのdocument
のルート要素 (例えば、 HTML 文書の場合は<html>
要素) から、querySelectorAll()
メソッドを使用して検索します。cssSelector
プロパティの構文エラーがある場合、検証失敗として扱うことがあります。(例:DOMException
SyntaxError
)- 要素が1つも見つからない場合、検証失敗として扱うことがあります。
- それらの要素の
outerHTML
属性を使用しDOMString
として対象を取得します。もし仮に要素が UTF-8 ではない場合、 WHATWG Encoding Standard に準拠した方法によって符号化します。 - すべての対象を UTF-8 に符号化します。もし仮に対象が複数存在する場合は、それらの内容を結合します。
- その結果と
integrity
プロパティを SRI セクション 3.3.5 に規定されている方法で検証します。- サポートしていないハッシュアルゴリズムの場合、検証失敗として扱うことがあります。
要素位置特定方法
cssSelector
プロパティの CSS セレクターで指定した要素を検索します。