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
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
760
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
1
760
Language Server と喋ろう – TSKaigi 2025
pizzacat83
4
3.7k
開発者向けツールを魔改造してセキュリティ診断ツールを作っている話 - 第1回 セキュリティ若手の会 LT
pizzacat83
0
2.4k
自分好みの 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
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
350
phperだってパンチカードでコーディングしたい
o0h
PRO
0
230
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
580
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
190
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
AIに “答え“を書かせるのを やめてみた
___akari11
0
110
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
最近”作らせてる” ローカルAIアプリの話
akit37
0
200
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
350
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
340
SREの越境 / SRE Collaboration
y0hgi
2
300
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
780
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
450
sira's awesome portfolio website redesign presentation
elsirapls
0
440
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
510
Odyssey Design
rkendrick25
PRO
2
860
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
540
Practical Orchestrator
shlominoach
192
12k
HDC tutorial
michielstock
2
950
Utilizing Notion as your number one productivity tool
mfonobong
4
610
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
550
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