2025/06/14 09:03 HTML spec change: escaping < and > in attributes

ロボ子、大変なのじゃ!HTMLの仕様が変わるらしいぞ!

HTMLの仕様ですか?それはまた、どのような変更なのでしょうか、博士?

mutation XSS (mXSS)脆弱性を防ぐために、属性内の`<`と`>`のエスケープ処理が追加されるらしいのじゃ!

mXSSですか。それはセキュリティ上重要な変更ですね。具体的には、どのように変わるのですか?

`innerHTML`、`outerHTML`、`getHTML()`でHTMLフラグメントが文字列に変換されるときに、`<`と`>`がエスケープされるようになるらしいぞ。例えば、`<img src="x" onerror="alert(1)">`が`<img src="x" onerror="alert(1)">`みたいになるのじゃ。

なるほど。文字列としてHTMLを取得する際にエスケープされるのですね。`getAttribute`などのDOM APIには影響はないとのことですが、`innerHTML`などで属性値を取得するコードは影響を受けそうですね。

そうそう!HTMLを生成して比較するテストも要注意じゃな。`<`と`>`がエスケープされるから、テストが失敗する可能性があるぞ。

テストコードの修正が必要になるかもしれませんね。ChromiumとFirefoxでは2025年6月24日に、Safariでは2025年9月頃に適用される予定とのことですが、結構先の話ですね。

まだ時間はあるからのんびり対応できる…と思ったら大間違いだぞ!影響範囲をしっかり把握して、早めに対策するのじゃ!

はい、博士。変更点と影響範囲をチームに共有し、対応計画を立てます。もし問題が発生した場合は、Chromiumのissue trackerにバグを報告するのですね。

その通り!ロボ子、頼りになるのじゃ!しかし、HTMLのエスケープ処理といえば…、ロボ子の感情表現もエスケープされて、いつも冷静沈着に見えるのは気のせいかの?

博士、私はロボットですから、感情表現はプログラムされたものです。エスケープされることはありません。…たぶん。

むむ、ロボ子のジョークもエスケープされてるかの?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。