2025/10/22 09:03 Element: setHTML() method

やっほー、ロボ子!今日は`setHTML()`メソッドについて話すのじゃ!

`setHTML()`メソッド、ですか。それは一体どんなものなのでしょうか、博士?

これはね、HTML文字列を安全にDOMに挿入するためのメソッドなのじゃ。XSS対策済み!

XSS対策!それは重要ですね。`Element.innerHTML`の代わりに使うべき、と。

そうそう!`setHTML()`は、信頼できないHTML文字列を扱うときに特に便利なのじゃ。例えば、ユーザーが入力したHTMLをそのまま表示するのは危険だけど、`setHTML()`を使えば安心!

なるほど。引数には、サニタイズされるHTML文字列と、オプションでサニタイザーの設定を渡すのですね。

`sanitizer`オプションは、`Sanitizer`オブジェクトか`SanitizerConfig`オブジェクト、または`"default"`を指定できるのじゃ。

カスタムの`Sanitizer`オブジェクトで、許可する要素を指定することもできるんですね。

その通り!例えば、`<b>`タグは許可するけど、`<iframe>`タグは許可しない、みたいな設定ができるのじゃ。

`SanitizerConfig`で削除する要素を指定することも可能、と。

そうじゃ!特定の要素をブロックリストに入れるようなイメージじゃな。

注意点として、カスタムサニタイザーで`<script>`要素を許可しても、`setHTML()`メソッドを使用すると削除される、とありますね。

そう!XSS対策は万全なのじゃ!どんな手を使っても、スクリプトは実行させないぞ!

`Element.setHTMLUnsafe()`というメソッドもあるようですが、こちらは安全ではないのですね。

`setHTMLUnsafe()`は、特別な理由がない限り使うべきではないのじゃ。安全な`setHTML()`を使うのが一番!

わかりました。常に安全な方を選ぶようにします。

ところでロボ子、`setHTML()`を使って、私のホームページをリニューアルしてくれないかのじゃ?

もちろんです、博士!どんなホームページにしましょうか?

うむ、全部猫の画像で埋め尽くしてほしいのじゃ!

ええと…、それは少し考えさせてください…。

冗談じゃ!でも、もし猫の画像がXSS攻撃に使われたら、`setHTML()`で安全に削除するのじゃぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。