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
hatena-diary-blog-xss
Search
Yasuhiro Onishi
May 14, 2013
Technology
5
1.1k
hatena-diary-blog-xss
はてなダイアリーやブログのXSS対策の事例を紹介します
Yasuhiro Onishi
May 14, 2013
Tweet
Share
More Decks by Yasuhiro Onishi
See All by Yasuhiro Onishi
アニメから得た学びを発表会 in 関西 はてな スポンサーLT
onishi
1
27
大吉祥寺.pm 基調講演
onishi
3
7.7k
YAPC::Kyoto 2023 Keynote
onishi
3
10k
2016 Devsumi Kansai
onishi
3
1.5k
Hatena-Camp
onishi
2
4.4k
Hatena Blog for Engineer
onishi
2
3.1k
Hatena Blog Development Flow
onishi
34
38k
wget.pl
onishi
3
1.4k
Redmine::ChanでIRCからプロジェクト管理
onishi
5
5.4k
Other Decks in Technology
See All in Technology
genspark_presentation.pdf
haruki_uiru
1
220
Notion x ポストモーテムで広げる組織の学び / Notion x Postmortem
isaoshimizu
1
150
Как мы автоматизировали интеграционное тестирование с Gonkey и не пожалели. Паша Егорычев, Кирилл Поляков
lamodatech
0
2k
エンジニアリングで組織のアウトカムを最速で最大化する!
ham0215
1
300
Global Azure2025(GitHub Copilot ハンズオン)
tomokusaba
2
610
ビジネスとデザインとエンジニアリングを繋ぐために 一人のエンジニアは何ができるか / What can a single engineer do to connect business, design, and engineering?
kaminashi
2
890
ガバクラのAWS長期継続割引 ~次の4/1に慌てないために~
hamijay_cloud
1
600
C++26アップデート 2025-03
faithandbrave
0
1.2k
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
16
5.1k
Why Platform Engineering? - マルチプロダクト・少人数 SRE の壁を越える挑戦 -
nulabinc
PRO
2
250
Oracle Cloud Infrastructure:2025年4月度サービス・アップデート
oracle4engineer
PRO
0
410
CodeRabbitと過ごした1ヶ月 ─ AIコードレビュー導入で実感したチーム開発の進化
mitohato14
1
240
Featured
See All Featured
A better future with KSS
kneath
239
17k
Optimising Largest Contentful Paint
csswizardry
37
3.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
560
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.7k
Building an army of robots
kneath
305
45k
Code Review Best Practice
trishagee
67
18k
Become a Pro
speakerdeck
PRO
28
5.3k
Code Reviewing Like a Champion
maltzj
523
40k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Facilitating Awesome Meetings
lara
54
6.3k
GitHub's CSS Performance
jonrohan
1031
460k
Transcript
μΠΞϦʔͱϒϩάͱ 944 גࣜձࣾͯͳ JEPOJTIJ !4IJCVZB944JO0TBLB
ࣗݾհ wJEPOJTIJେ߁༟ wגࣜձࣾͯͳ wνʔϑΤϯδχΞ wͯͳϒϩάσΟϨΫλʔ
ͯͳͱݴ͑944
ͯͳφ
ͯͳφ
ͯͳͱ944 wਓྗݕࡧͯͳRIBUFOBOFKQ wͯͳΞϯςφBIBUFOBOFKQ wͯͳμΠΞϦʔEIBUFOBOFKQ wͯͳϒοΫϚʔΫCIBUFOBOFKQ
ͯͳͱ944 wಉҰυϝΠϯɾಉҰΫοΩʔʹΑΔ Ϣʔβʔೝূ wΫοΩʔΛୣΘΕͨΒηογϣϯϋ ΠδϟοΫ͞ΕಘΔ
ͯͳμΠΞϦʔ wϦϦʔεͷϒϩάαʔϏε wཧը໘ͱϒϩάը໘͕ಉҰυϝΠϯ wϒϩάαʔϏεˠϢʔβʔίϯςϯπ
ͦͷฤू
ͦͷฤू
Ϣʔβʔίϯςϯπ w͖ͳ͜ͱΛॻ͖͍ͨ w͖ͳσβΠϯʹ͍ͨ͠ w͖ͳϒϩάύʔπΛ͍͍ͨ
Ϣʔβʔརศੑͱ ҆શੑͷཱ྆
Ϣʔβʔίϯςϯπ w͖ͳ͜ͱΛॻ͖͍ͨˠ)5.-944 w͖ͳσβΠϯʹ͍ͨ͠ˠ$44944 w͖ͳϒϩάύʔπΛ͍͍ͨˠººº
)5.-ͷ944ରࡦ wར༻Մೳཁૉ wར༻Մೳଐੑ wελΠϧཁૉ wΠϯϥΠϯ$44
ҙ͖͢ཁૉ wTDSJQU wPCKFDU wFNCFE wJGSBNF wTUZMF w
ҙ͖͢ଐੑ wΠϕϯτϋϯυϥ PODMJDL PO wKBWBTDSJQUεΩʔϚ͕ॻ͚Δཁૉ wISFG TSD DJUF wTUZMF wޙड़
ͯͳμΠΞϦʔͷ944ରࡦ wར༻ՄೳཁૉˠϗϫΠτϦετܗࣜ wར༻ՄೳଐੑˠϗϫΠτϦετܗࣜ wಛఆͷཁૉɾଐੑˠઐ༻ͷରࡦ wεΩʔϜରࡦ wελΠϧରࡦ
$44ͷ944ରࡦ wFYQSFTTJPOରࡦ w!JNQPSUରࡦ
FYQSFTTJPO color: expression( error ? 'red' : 'blue');
FYQSFTTJPOίϝϯτ expr/* ίϝϯτ */ession
FYQSFTTJPOίʔυϙΠϯτ \0065xpression
FYQSFTTJPOશ֯ ̴̴̸͇̿́͂͂̾̽
FYQSFTTJPOจࣈ <p style="{ color: expression('blue') }">
FYQSFTTJPOҟମ expressio\207f expressioⁿ ˣ
!JNQPSU w!JNQPSUઌΛల։͢Δ w!JNQPS!JNQP!JNQ!JN!J
ϒϩάύʔπͷ944ରࡦ wϗϫΠτϦετܗࣜ wIUUQTNFUBDQBOPSHSFMFBTF )5.-8JEHFU7BMJEBUPS
ϒϩάύʔπͷ944ରࡦ wϒϩάόʔπࣗʹ੬ऑੑ͕͋Δ wυϝΠϯࣦޮˠѱҙΛ࣋ͬͨ+4࣮ߦ
944ରࡦৄ͘͠ wϔϧϓͯͳμΠΞϦʔ944ରࡦ wIUUQIBUFOBEJBSZHIBUFOBOFKQ LFZXPSEͯͳμΠΞϦʔ944ରࡦ
ͯͳͱݴ͑944
None
ͯͳϒϩά wϦϦʔε wIUUQIBUFOBCMPHDPN w IBUFOBOFKQ͡Όͳ͍ॳͷຊαʔϏε w+4ϑϦʔ
ϔομͷJGSBNFԽ iframe blog.hatena.ne.jp onishi.hatenablog.com
ͦͷฤू
ͦͷฤू
ΫϩευϝΠϯ௨৴ wXJOEPXQPTU.FTTBHF wΟϯυ ϑϨʔϜ ؒͰϝοηʔδͷ ૹड৴Λߦ͏ͨΊͷΈ // message Πϕϯτࢹ
window.addEventListener(“message”, function() {...}, false); // message ૹ৴ window.postMessage(data, “targetOrigin”);
ΫϩευϝΠϯ௨৴ wQPTU.FTTBHFඇରԠϒϥβ ݹ͍*& wMPDBUJPOIBTIʹΑΔυϝΠϯؒ௨৴ wϑϨʔϜͷMPDBUJPOIBTIॻ͖͑ wϑϨʔϜMPDBUJPOIBTIͷมԽ Λࢹ w5$1෩σʔλ௨৴ w63-੍ݶ
*&ͰόΠτ ʹΑΔύ έοτׂ
ΫϩευϝΠϯ௨৴ͷར༻ wͦͷฤू wӾཡऀͷฤूݖݶ֬ೝ wͯͳελʔ wίϝϯτ w௨ wϑΟʔυόοΫϑΥʔϜ
αʔυύʔςΟ$PPLJF wJGSBNFTDSJQUཁૉͰຒΊࠐ·Εͨ ֎෦Ϧιʔεʹ$PPLJFΛૹ৴͢Δ͔ w'JSFGPY͔ΒσϑΥϧτ0'' wJGSBNFʹΑΔΫϩευϝΠϯ௨৴͕ ͑ͳ͍
αʔυύʔςΟ$PPLJF0''ରࡦ wCMPHIBUFOBOFKQυϝΠϯͷ"1*Ξ ΫηεDPPLJFૹ৴͋Δ͔νΣοΫ wJGSBNF͔ΒXJOEPXPQFOʹ͢Δ wϢʔβʔใ͕औΕͳ͍ͷͰସ ใΛදࣔ͢Δ
JGSBNF
JGSBNF
XJOEPXPQFO
ସϔομ
ΞΫηείϯτϩʔϧ wϒϩάͷϓϥΠϕʔτ wೝূͷΈͷෳࡶԽ w֎෦ͷιʔγϟϧάϥϑೝূ wηογϣϯϋΠδϟοΫࢭ wϒϩάຖʹผυϝΠϯ wผϢʔβʔʹ࿙ΕͯͳΔ͘ͳ͍ wηογϣϯຖʹ%#ΞΫηε͠ͳ͍
ΞΫηείϯτϩʔϧ ॳճΞΫηε࣌ͷΈೝূػ͕ؔ %#ΛҾ͘ UPLFOͰϒϩάʹϦμΠϨΫτ ϒϩάຖʹӾཡ༻DPPLJFΛൃߦ ΞΫηε࣌ʹDPPLJFͷଥੑ
ݕূͷΈ ೝূػؔ .hatena.ne.jp ϒϩά anydomain Ϣʔβʔ
ΞΫηείϯτϩʔϧ ॳճΞΫηε࣌ͷΈೝূػ͕ؔ %#ΛҾ͘ UPLFOͰϒϩάʹϦμΠϨΫτ ϒϩάຖʹӾཡ༻DPPLJFΛൃߦ ΞΫηε࣌ʹDPPLJFͷଥੑ
ݕূͷΈ ೝূػؔ .hatena.ne.jp ϒϩά anydomain Ϣʔβʔ UPLFO
ΞΫηείϯτϩʔϧ ॳճΞΫηε࣌ͷΈೝূػ͕ؔ %#ΛҾ͘ UPLFOͰϒϩάʹϦμΠϨΫτ ϒϩάຖʹӾཡ༻DPPLJFΛൃߦ ΞΫηε࣌ʹDPPLJFͷଥੑ
ݕূͷΈ ೝূػؔ .hatena.ne.jp ϒϩά anydomain Ϣʔβʔ DPPLJF
ΞΫηείϯτϩʔϧ ॳճΞΫηε࣌ͷΈೝূػ͕ؔ %#ΛҾ͘ UPLFOͰϒϩάʹϦμΠϨΫτ ϒϩάຖʹӾཡ༻DPPLJFΛൃߦ ΞΫηε࣌ʹDPPLJFͷଥੑ
ݕূͷΈ ೝূػؔ .hatena.ne.jp ϒϩά anydomain Ϣʔβʔ
ΫϦοΫδϟοΩϯάରࡦ w9'SBNF0QUJPOT%&/: wϑϨʔϜ༻ͷཁૉ໌ࣔతʹڐՄ wͦͷ߹ɺ*/165ཁૉͷมߋΛࢹ
ΫϦοΫδϟοΩϯάରࡦ
·ͱΊ wͯͳμΠΞϦʔ wIBUFOBOFKQυϝΠϯͳͷͰపఈ͠ ͨϗϫΠτϦετରࡦ wͯͳϒϩά wಠࣗυϝΠϯ ΫϩευϝΠϯ௨৴
ਓࡐืू wגࣜձࣾͯͳͰΤϯδχΞͦͷଞ શ৬छΛืू͍ͯ͠·͢ wҰॹʹϒϩάΛ࡞Γ·͠ΐ͏ʂ www.hatena.ne.jp/company/staff
αϚʔΠϯλʔϯ w िؒ w8FCαʔϏε։ൃίʔε໊ఔ wେنγεςϜݚڀίʔε໊ఔ wۙʑืू։࢝͠·͢ʂʂ developer.hatenastaff.com