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
230
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
790
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
1
770
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
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.3k
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.1k
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
240
sbt 2.0: takeoff
eed3si9n
0
180
LLM 101
dalinaum
0
380
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
4.9k
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.2k
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
150
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
130
GraphQL の onError と Nullability のこれから
quramy
0
200
最近”作らせてる” ローカルAIアプリの話
akit37
0
520
Modernizing iOS Apps
seyfoyun
0
140
Featured
See All Featured
Leo the Paperboy
mayatellez
10
2.4k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
590
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.4k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
430
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
290
Joys of Absence: A Defence of Solitary Play
codingconduct
1
560
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
What's in a price? How to price your products and services
michaelherold
247
13k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
エンジニアに許された特別な時間の終わり
watany
109
250k
Optimising Largest Contentful Paint
csswizardry
37
4k
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