萌えハッカーニュースリーダー

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

出典: https://developer.mozilla.org/en-US/docs/Web/API/Element/setHTML
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

冗談じゃ!でも、もし猫の画像がXSS攻撃に使われたら、`setHTML()`で安全に削除するのじゃぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search