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

Text within DOM Integrity

概要

本文書は、対象要素に含まれるテキストコンテンツの完全性を保証するための形式について説明します。

用語

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

  • Content Attestation (CA)

Text Target の形式

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

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

JSON Schema

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

プロパティ

  • type: REQUIRED. Content Integrity Descriptor のタイプです。必ず TextTargetIntegrity でなければなりません (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. 対象要素の descendant text content を取得します。それは要素の textContent 属性の値です。もし仮に null が得られた場合は、その対象を空の文字列 ("") に変換します。
  3. すべての対象を UTF-8 に符号化します。もし仮に対象が複数存在する場合は、それらの内容を結合します。
  4. その結果と integrity プロパティを SRI セクション 3.3.5 に規定されている方法で検証します。
    • サポートしていないハッシュアルゴリズムの場合、検証失敗として扱うことがあります。
注記

Text Target は textContent 属性を使用し、innerText 属性とは異なります。両者の主な違いについては Differences from innerText - MDN を参照してください。

要素位置特定方法

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