Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
<title><a id="</title>君はこのHTMLをパースできるか"></a></t...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
pizzacat83
July 27, 2026
Programming
220
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
750
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
1
750
Language Server と喋ろう – TSKaigi 2025
pizzacat83
4
3.7k
開発者向けツールを魔改造してセキュリティ診断ツールを作っている話 - 第1回 セキュリティ若手の会 LT
pizzacat83
0
2.3k
自分好みの TS バンドラを Rust で作れる!Deno の内部ライブラリの活用 – Denoで変わるランタイムの景色 実践事例 Lunch LT
pizzacat83
5
1.2k
Deno で作る快適な “as Code” プラットフォーム – TSKaigi 2024
pizzacat83
4
2.2k
Other Decks in Programming
See All in Programming
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
340
Webの地図
yosuke_furukawa
PRO
6
5k
Androidだけじゃない、DroidKaigiで広がった私の技術スタック
akkeylab
0
100
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
150
iOSDC2026登壇資料.pdf
riofujimon
0
200
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
160
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
270
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
330
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3k
AWSに止められる覚悟してますか?
morizo_1984
2
490
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
120
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
300
Featured
See All Featured
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
480
How Software Deployment tools have changed in the past 20 years
geshan
2
34k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Optimizing for Happiness
mojombo
378
71k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
250
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
New Earth Scene 8
popppiees
4
2.6k
Docker and Python
trallard
47
4.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
Scaling GitHub
holman
464
140k
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