Document: parseHTML() 静的メソッド
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
parseHTML()
は Document
オブジェクトの静的メソッドで、HTML の文字列を構文解析・サニタイズして新しい Document
インスタンスを作成するための、XSS 対策済みの安全な方法を提供します。
構文
Document.parseHTML(input)
Document.parseHTML(input, options)
引数
input
-
文字列で、サニタイズされシャドウルートに挿入される HTML を定義します。
options
省略可-
以下のオプション引数を持つオプションオブジェクトです。
sanitizer
-
Sanitizer
またはSanitizerConfig
オブジェクトで、入力のどの要素が許可されたり削除されたりするかを定義します。文字列"default"
で既定のサニタイザーの構成になります。 一般的に、設定を再利用する場合、SanitizerConfig
よりもSanitizer
の方が効率的であることが期待されます。 指定しなかった場合、 XSS 対応済みの既定のサニタイザー設定が使用されます。
返値
Document
です。
例外
TypeError
-
options.sanitizer
に次のようなものが渡された場合に例外が発生します。- 正規化されていない
SanitizerConfig
("allowed" と "removed" の両方の設定を含むもの) - 値が
"default"
ではない文字列 Sanitizer
、SanitizerConfig
、文字列のどれでもない値。
- 正規化されていない
解説
parseHTML()
メソッドは、HTML の文字列を構文解析・サニタイズし、XSS 対策済みの新しい Document
インスタンスを生成します。
生成される Document
は、コンテンツタイプが "text/html"、文字コードが UTF-8、URL が "about:blank" を保有します。
options.sanitizer
引数でサニタイザーの構成が指定されていない場合、parseHTML()
は既定の Sanitizer
構成で実行されます。
この構成では、XSS に安全と見なされるすべての要素と属性が許可され、安全でないと見なされるエンティティは許可されません。
独自のサニタイザーまたはサニタイザー設定を指定することで、許可または除去される要素、属性、コメントを選択できます。
なお、サニタイザー設定で安全でないオプションが許可されている場合でも、このメソッドを使用すると(暗黙的に Sanitizer.removeUnsafe()
が呼び出されるため)、それらは除去されます。
入力される HTML には、宣言型シャドウルート が含まれることがあります。
具体的なシャドウホスト内で複数の宣言型シャドウルートが定義されている場合、まず ShadowRoot
が生成され、それ以降の宣言はそのシャドウルート内の <template>
要素として構文解析されます。
安全でない要素や属性を許可する必要が特にない限り、parseHTML()
は Document.parseHTMLUnsafe()
の代わりに使用すべきです。
解析対象の HTML に安全でない HTML エンティティが含まれる必要がない場合は、Document.parseHTML()
を使用してください。
なお、このメソッドは入力文字列を常に XSS 攻撃に脆弱なエンティティからサニタイズするため、信頼型 API によるセキュリティ保護や検証は行われません。
仕様書
Specification |
---|
HTML Sanitizer API> # dom-document-parsehtml> |
ブラウザーの互換性
Loading…
関連情報
Document.parseHTMLUnsafe()
Element.setHTML()
およびElement.setHTMLUnsafe()
ShadowRoot.setHTML()
およびShadowRoot.setHTMLUnsafe()
DOMParser.parseFromString()
: HTML や XML を DOM ツリーに構文解析する- HTML サニタイザー API