Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
<title><a id="</title>君はこのHTMLをパースできるか"></a></t...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
pizzacat83
July 27, 2026
Programming
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
[雑LT_study](
https://web-study.connpass.com/event/396644/
) (2026/07/27) の登壇資料です。
pizzacat83
July 27, 2026
More Decks by pizzacat83
See All by pizzacat83
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
700
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
1
720
Language Server と喋ろう – TSKaigi 2025
pizzacat83
4
3.6k
開発者向けツールを魔改造してセキュリティ診断ツールを作っている話 - 第1回 セキュリティ若手の会 LT
pizzacat83
0
2.3k
自分好みの TS バンドラを Rust で作れる!Deno の内部ライブラリの活用 – Denoで変わるランタイムの景色 実践事例 Lunch LT
pizzacat83
5
1.1k
Deno で作る快適な “as Code” プラットフォーム – TSKaigi 2024
pizzacat83
4
2.2k
Other Decks in Programming
See All in Programming
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
140
AIエージェント時代のコードレビューを設計する
nogu66
6
2.5k
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
360
信頼性の目標を誰も求めてない
shubox
0
490
スマート反転とウェブアクセシビリティ
camiha
0
140
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
210
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
410
What We Talk About When We Talk About XP
m_seki
2
390
アクセシビリティから考える情報設計
high_g_engineer
0
280
Building an Out-of-Order CPU
latte72
1
710
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
210
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
320
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
Side Projects
sachag
455
43k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Practical Orchestrator
shlominoach
191
12k
Amusing Abliteration
ianozsvald
1
290
Are puppies a ranking factor?
jonoalderson
2
3.9k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Transcript
君はこのHTMLをパースできるか"></a></title> <title><a id="</title> #雑LT_study 2026/07/27 pizzacat83 1
とりあえずブラウザにパースしてもらおう <title><a id="</title> 君はこのHTMLをパースできるか"></a></title> (ブラウザで開いて DevTools で DOM ツリー見てみましょう) 2
第2問! 君はこのHTMLをパースできるか"></a></div> <div><a id="</div> タグの代わりに div タグにしてみた (ブラウザで開いて DevTools で
DOM ツリー見てみましょう) title 3
は、 今 <title> の中にいるかどうかで パーサーの振る舞いがまるで違う <a id="</X>hoge"></a> 4
HTML パーサーの仕様を見ると…… 5 引用元: https://html.spec.whatwg.org/multipage/parsing.html
HTML パーサーの仕様をもっと見ると…… 目次がもうデカい!→ 字句解析器: 84状態の状態機械 構文解析器: 21状態の状態機械 (& タグ毎大量分岐) 引用元:
https://html.spec.whatwg.org/multipage/parsing.html 6
HTML なんもわかってなかったわ! 自分が書いた HTML が意図通りにパースされるか不安になってきた テンプレートエンジンが生成した HTML が意図通りにパースされるのかも不安 ???「DOM ツリー作って
.innerHTML 取れば 完璧な HTML になるのでは」 7
びっくり事実: DOM ツリーを シリアライズしてパースすると違う木になりうる ……と、仕様に注意書きがある 8 引用元: https://html.spec.whatwg.org/multipage/parsing.html
びっくり事実: DOM ツリーを シリアライズしてパースすると違う木になりうる 実例もある! 9
この挙動使ってサニタイザすり抜けができた (今は修正済み) 詳細:「HTMLパーサー自作で理解するmXSS (CVE-2019-16728・CVE-2020-6413 篇)」 10
おわりに HTMLの仕様は膨大、複雑怪奇。でも パーサーを自分で書いてみると、意外と読み解ける ブラウザ自作を通して、Web仕様の理解を深めよう! 11