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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yasuhiro Onishi
May 14, 2013
Technology
5
1.2k
hatena-diary-blog-xss
はてなダイアリーやブログのXSS対策の事例を紹介します
Yasuhiro Onishi
May 14, 2013
Tweet
Share
More Decks by Yasuhiro Onishi
See All by Yasuhiro Onishi
「手を動かした者だけが世界を変える」ソフトウェア開発だけではない開発者人生
onishi
18
10k
アニメから得た学びを発表会 in 関西 はてな スポンサーLT
onishi
1
79
大吉祥寺.pm 基調講演
onishi
4
8.8k
YAPC::Kyoto 2023 Keynote
onishi
3
11k
2016 Devsumi Kansai
onishi
3
1.6k
Hatena-Camp
onishi
2
4.5k
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
LINE Messengerの次世代ストレージ選定
lycorptech_jp
PRO
19
7.6k
クラウド時代における一時権限取得
krrrr38
1
180
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
3
1.7k
20260305_【白金鉱業】分析者が地理情報を武器にするための軽量なアドホック分析環境
yucho147
2
210
情シスのための生成AI実践ガイド2026 / Generative AI Practical Guide for Business Technology 2026
glidenote
0
160
新職業『オーケストレーター』誕生 — エージェント10体を同時に回すAgentOps
gunta
4
1.7k
JAWS FESTA 2025でリリースしたほぼリアルタイム文字起こし/翻訳機能の構成について
naoki8408
1
150
Evolution of Claude Code & How to use features
oikon48
1
550
ビズリーチにおける検索・推薦の取り組み / DEIM2026
visional_engineering_and_design
1
120
Claude Codeの進化と各機能の活かし方
oikon48
21
10k
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
8
7.1k
ナレッジワークのご紹介(第88回情報処理学会 )
kworkdev
PRO
0
150
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
200
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
980
Bash Introduction
62gerente
615
210k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
470
Practical Orchestrator
shlominoach
191
11k
Agile that works and the tools we love
rasmusluckow
331
21k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
820
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Balancing Empowerment & Direction
lara
5
930
Utilizing Notion as your number one productivity tool
mfonobong
4
250
エンジニアに許された特別な時間の終わり
watany
106
240k
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