テクノロジー

XSS攻撃の温床「innerHTML」はもう終わり、「Firefox 148」に「setHTML()」が導入/入力を自動でサニタイズしてくれる「Sanitizer API」が実装

1: daruyanagi 2026/02/26 08:21

どうせ古いサイトは放置なんだろけど、はよ全ブラウザーに導入されてほしい ( ˘ω˘ )

2: JULY 2026/02/26 08:43

innerHTML は使われすぎだもんなぁ。多くのスクリプト系言語にある eval を乱用するようなもの。

3: nguyen-oi 2026/02/26 08:56

innerHTMLにさよならバイバイか。長かったな...。これでセキュリティ事故が少しは減るんだろうか。ようやく標準化されて安心だわ

4: yto 2026/02/26 09:09

浸透待ち

5: punychan 2026/02/26 09:19

メディアの記事なら「JavaScript」の単語を一つでも冒頭に入れようぜ。対象読者にはわかるだろうけどさ

6: Nilfs 2026/02/26 09:43

色々古いAPIなくなってるんだろうなー、知識がだいぶ止まってるからそのうちAIにまとめて聞かないとな

7: arjen__robben 2026/02/26 09:43

むしろ対象読者以外はJavaScriptなんて言われても分からんから不要なんよ

8: masaru_al 2026/02/26 09:47

innerHTML のような Web API は通常 JavaScript の中で使われるけれど、厳密には JavaScript の言語仕様ではないからね

9: xlc 2026/02/26 09:51

「サニタイズ」という用語を使っていたら、その人は問題を正しく把握していない可能性が高い。入力を「無毒化」するのではなく、出力をエスケープするのが正しい。

10: Fushihara 2026/02/26 10:12

そのうちCSPでinnerHTMLを禁止する事が出来るようになるんだろうな。デフォルト禁止はbroke the webなので勘弁してもろて

11: cinefuk 2026/02/26 10:25

"「Firefox 148」で導入された「Sanitizer API」は、「innerHTML」に代わる仕組みとして「setHTML()」を提供する。「setHTML()」は書き込み専用のメソッドで、危険なスクリプトを含むHTMLコードを渡しても、自動で“無毒化”を行う。"

12: kabuquery 2026/02/26 10:32

xssはもうとっくに絶滅したんでは

13: ustam 2026/02/26 10:39

こういうのは当分置き換え無理なんだろうなあ…。フレームワークがよしなに置き換えてくれるのを待つだけかな?

14: manaten 2026/02/26 10:43

今日日XSS起こすのはサーバーサイドにしろクライアントサイドにしろフレームワークを適切に使ってないが所以だろうから、XSSの発生率にはそんなに影響しなそうな気もするw

15: fusionstar 2026/02/26 11:27

jQuery は対応するのかな。

16: s_hiiragi 2026/02/26 11:36

sanitizeは無害化って書く方が多そうな気がする

17: nilab 2026/02/26 11:40

最近はライブラリやフレームワークで吸収しているのかと。「「innerHTML」プロパティには無毒化処理を実施する機能がなく、プログラマーが自分で処理を書く必要があった。そのため、無毒化処理にどうしても漏れが生じ」

18: otchy210 2026/02/26 12:12

いずれ React コンポーネントに dangerouslySetInnerHTML の代わりの safelySetHTML プロパティが生えたりするかな?

19: monacal 2026/02/26 12:14

ユーザー入力は受け付けてないけど、setHTMLできるならさせてほしい。Chromeさんはよβ取って

20: t-murachi 2026/02/26 12:27

ほー。

21: lifeisadog 2026/02/26 12:43

新しいの作るよりいまのinnerHTML代入時にブラウザがチェックしてくれればいいのに

22: RATCHO 2026/02/26 13:22

そもそもinnerHTMLなんて古い書き方じゃなくてinsertAdjacentHTMLで書いてるが

23: tekimen 2026/02/26 13:38

なんでいままでなかったのか不思議なくらいの機能だ

24: toaruR 2026/02/26 13:53

『「setHTML()」は書き込み専用のメソッド』(´-`)読み込みに問題がないなら書く時だけコレのエイリアスとして動いてくれればいいよね

25: fukken 2026/02/26 14:20

innerHTMLの挙動を変えると互換性が失われるので別APIにするしかないと思うよ。

26: jintrick 2026/02/26 14:37

outerHTMLってのもある

27: puruhime 2026/02/26 14:43

AIがinnerHTMLを書かなくなる日はいつになるのかしら

28: yorkfield 2026/02/26 14:51

"入力を「無毒化」するのではなく、出力をエスケープするのが正しい。"/それは同意だけど、このsetHTMLはその出力をエスケープするものでは?

29: secseek 2026/02/26 15:05

そもそもサニタイズって考え方自体がすでに危険な気がするんですけど、そうは言っても必要ってことなんですかね…

30: hogeaegxa 2026/02/26 16:10

よくあるケースのわりに、物凄く対策に時間がかかったなあという感じはするが、今のWebはそこまで後方互換性気にしないでいいし、Chromeで実装されたらガンガン使われるまで時間はかからないかな

31: iphone 2026/02/26 16:39

かくして人類は "無毒化" というダークサイドに落ちてしまった。「サニタイズ言うな」の抵抗も空しく、人の子は20年かけても出力に応じた適切なエスケープができるようにはならなかったのだ。

32: knjname 2026/02/26 17:50

innerHTMLに文字列設定が一番高速なことが多くセキュアじゃないとかとは別に利用価値はある

33: oldriver 2026/02/26 18:17

MDNによるとエスケープではなく削除/この分野、正しい方法は確立済みでその中での多層防御に思えるが、「正しい方法」に無頓着な層を救うことも意義なのかも。さらに、エスケープ無しの新パラダイムの可能性?

34: mohno 2026/02/26 20:35

なるほど、SQLみたいにパラメータで対応できないからか。あんまり入力を直接渡すような処理を書いたことがなかった。

35: atsushieno 2026/02/26 22:38

「サニタイズって言うな」と主張する人間のほうが異常だった。Sanitizer API以前からも英語圏でずっと使われている。

36: adsty 2026/02/26 23:51

クロスサイトスクリプティングと呼ばれるタイプの脆弱性を抑制する技術。

37: kuracom 2026/03/01 23:50

確かに挙動が変わるよりは別手段を提供してくれる方が厄介にならずありがたい。

38: ockeghem 2026/03/02 13:08

サニタイズとういう用語ですが、IPA安全なウェブサイトの作り方にも出てくる「HTMLテキストから…スクリプトを含まない必要な要素のみを抽出する」をサニタイズと呼ぶことが多いのですよ

39: KoshianX 2026/03/02 13:18

む、スクリプトが削除されるのか。すり抜けそうだけど大丈夫なのかな。

40: ghostbass 2026/03/04 18:10

入力でなく出力エスケープとか仮のDOM作って危険な部分を排除?単純なエスケープとも言えなさそうだしサニタイズでもまあいいんじゃないかな