1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HTML タグの属性の中の `<` と `>` がエスケープされるようになった

Last updated at Posted at 2025-06-15

HTML の属性値に含まれる <> が Chrome 138 から実体参照に自動変換されるとのこと。 Chrome 138 のリリースはベータ版が 2025年5月28日、正式リリースは 2025年6月24日を予定

HTML タグの属性値というのは <html lang="ja">lang="ja" の部分。この中に含まれるのは基本的に文字列になるのだけれど、その中に <> が含まれていると &lt;&gt; に置き換えられるというもの

<!-- 記述された HTML -->
<div id="div1" data-content="<u>hello</u>"></div>
<!-- getElementById('div2').outerHTML -->
<div id="div2" data-content="&lt;u&gt;hello&lt;/u&gt;"></div>

この変更は常に適用されるわけではなく outerHTML innerHTML getHTML で文字列として HTML を取得した際に適用される

getAttributedataset attributes を経由して属性値を取得する場合はこれまで通り <div id="div1" data-content="<u>hello</u>"></div> であっても <div id="div2" data-content="&lt;u&gt;hello&lt;/u&gt;"></div> であっても "<u>hello</u>" が取得できる

まとめ

そもそも属性値に <> を入れることはあまりないはずというのと、フレームワークを使っている限り outerHTML innerHTML getHTML に関しても使うことは少なくさらに属性値の抽出はかなりレアケースだと思うので、そこまで心配しなくて良さそう

HTML を切った張った系の実装をしているシステムに関してはちょっとだけ気にしてみてください

斜め読みして dataset の中身変えるの影響デカくね、と思ってこの記事を書き始めたのだけどあまり影響なさそうでよかったよかった

元記事ではこれを実装する原因となった脆弱性などの解説へのリンクもあるので興味ある方は見てみてください

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?