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
1.2k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
hatena-diary-blog-xss
はてなダイアリーやブログのXSS対策の事例を紹介します
Yasuhiro Onishi
May 14, 2013
More Decks by Yasuhiro Onishi
See All by Yasuhiro Onishi
「手を動かした者だけが世界を変える」ソフトウェア開発だけではない開発者人生
onishi
18
11k
アニメから得た学びを発表会 in 関西 はてな スポンサーLT
onishi
1
91
大吉祥寺.pm 基調講演
onishi
4
9.1k
YAPC::Kyoto 2023 Keynote
onishi
3
11k
2016 Devsumi Kansai
onishi
3
1.6k
Hatena-Camp
onishi
2
4.6k
Hatena Blog for Engineer
onishi
2
3.2k
Hatena Blog Development Flow
onishi
34
38k
wget.pl
onishi
3
1.5k
Other Decks in Technology
See All in Technology
Bucharest Tech Week 2026 - Guardians of the Cloud-Native Galaxy
edeandrea
PRO
0
140
AIに障害切り分けを全部やってもらった。 。 。 。
estie
0
110
アジャイルな経理と Claude Code と経営の未来
kawaguti
PRO
3
190
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
460
元銀行員がAIだけでアプリを量産!「バイブコーディング実演セミナー 」
tatsuya1970
0
110
AIをフル活用してオンコール機能のプロトタイプを2日で作った話 / Building an AI-Powered On-Call Prototype in Just Two Days
nari_ex
0
120
AI-DLCを “そのまま導入しなかった”話 ~組織に合わせてアジャストした 私たちの実践共有~
hiroramos4
PRO
1
420
5分でわかるDuckDB Quack
chanyou0311
3
250
自宅LLMの話
jacopen
1
720
【2026年版】 ベクトル検索とEmbedding最前線
mocobeta
23
7.5k
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
270
Deep Data Security 機能解説
oracle4engineer
PRO
2
110
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Are puppies a ranking factor?
jonoalderson
1
3.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Statistics for Hackers
jakevdp
799
230k
Paper Plane (Part 1)
katiecoart
PRO
0
9.2k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
210
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
850
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Odyssey Design
rkendrick25
PRO
2
700
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Writing Fast Ruby
sferik
630
63k
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