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
フロントエンドエンジニアのためのセキュリティ対策
Search
CarstayJP
February 26, 2022
Technology
1.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
フロントエンドエンジニアのためのセキュリティ対策
CarstayJP
February 26, 2022
More Decks by CarstayJP
See All by CarstayJP
Google App Script(GAS)
carstayjp
0
450
C向けスタートアップのプロダクト開発の進め方
carstayjp
0
550
Other Decks in Technology
See All in Technology
tamachi.go 誕生の裏側
rymiyamoto
1
200
コミュニティから始まった農業IoTとの7年間 ——人との関わりが教えてくれたこと
peacemaker07
0
110
内製AIチャットボット開発で学んだ Datadog Agent Observability活用術
mkdev10
0
130
国家プロジェクトを支える「さくらONE」 大規模LLM開発におけるGPU障害を乗り越えるクラスター運用戦略
gpuunite_official
0
280
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
530
Flutter × BLE Centralを自前Pluginで実装する設計パターン - MethodChannel / EventChannelで作る双方向ブリッジの実践 / Building Custom Flutter BLE Central Plugins: Bidirectional Bridging with Method & Event Channels
bitkey
PRO
0
250
AIにブラウザを触らせて、E2EテストをPlaywrightで書く
koji_kawamura
0
410
Oracle MCP Servers Explained
thatjeffsmith
0
460
AI-DLC実践録_フルサイクル開発への挑戦
miyuc
0
420
Android skills に学ぶ
kokiko
0
170
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.4k
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.8k
A Soul's Torment
seathinner
6
3.5k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
500
The untapped power of vector embeddings
frankvandijk
2
1.8k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
RailsConf 2023
tenderlove
30
1.5k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.4k
So, you think you're a good person
axbom
PRO
2
2.1k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
Google's AI Overviews - The New Search
badams
0
1.1k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Transcript
ϑϩϯτΤϯυΤϯδχΞ ͓͖͍ͬͯͨηΩϡϦςΟରࡦ XSSฤ 2022/02/26
Carstayגࣜձࣾɿ֓ཁ 2
Carstayגࣜձࣾɿϛογϣϯ 3 Stay Anywhere, Anytime. ୭͕͖ͳͱ͖ʹɺ͖ͳॴͰɺ͖ͳਓͱաͤ͝ΔੈքΛͭ͘Δ
CarstayגࣜձࣾɿϓϩμΫτ 4 ʮCarstayʯຊͰ།ҰɺΩϟϯϐϯάΧʔͱंதധεϙοτΛ༧͢Δ͜ͱ͕Ͱ͖ΔεϚϗΞϓϦͰ͢ Βͳ͍ظؒʹ༡ٳं྆ΛγΣΞ͍ͨ͠Φʔφʔɺۭ͖Λ༗ޮ׆༻͍ͨ͠றंΦʔφʔ͕ొ͍ͯ͠·͢
ࣗݾհ Ngo Van Thang | ϑϧελοΫΤϯδχΞ ▼ ܦྺ ɾ2014ʹଔۀޙʹདྷ ɾ2014
ιʔγϟϧήʔϜӡӦձࣾʹೖࣾ ɹɾήʔϜαʔόӡ༻ ɾ2016 ݣձࣾʹೖࣾ ɹɾίʔσΟϯάςεταʔϏεɺLINE৴αʔϏε։ൃ ɾ2018 ϒϩοΫνΣʔϯձࣾʹೖࣾ ɹɾϒϩοΫνΣʔϯΛͬͨΫϦΤʔλͱاۀͷϚονϯάαʔϏεɺӽڥEC։ൃ ɾ2020 Carstayגࣜձࣾʹೖࣾ | Tech Lead ɹɾ։ൃશൠཧɺίʔυϨϏϡʔɺΣϒɾΞϓϦ։ൃ ▼झຯ ɾήʔϜʢΞΫγϣϯήʔϜɺFPS etcʣ ɾαοΧʔ ɾίϚϯυϥΠϯ͕͖ Ngo Van Thangʢ30ࡀʣ @nooptr https://www.facebook.com/thanghedspi 5
Agenda • ੬ऑੑ(XSS)ͷΈͱରࡦ • σϞ • ·ͱΊ 6
ΣϒαΠτͷ੬ऑੑͷछྨผʢʣ 7 11% 2% 2% 3% 11% 13% 58% https://www.ipa.go.jp/files/000082044.pdf
XSS ʢΫϩεαΠτɾεΫϦϓςΟϯά ʣ DNSใͷઃఆෆඋ SQLΠϯδΣΫγϣϯ ϑΝΠϧͷޡͬͨެ։ σΟϨΫτϦɾτϥόʔαϧ HTTPSͷෆదͳར༻ ͦͷଞ
XSS ΫϩεαΠτɾεΫϦϓςΟϯά
XSSʢΫϩεαΠτεΫϦϓςΟϯάʣͱ ར༻ऀ͕ೖྗͨ͠༰Λදࣔ͢ΔΑ͏ͳߏͷWebαΠτʹଘࡏ͢Δܽ ؕΛѱ༻ͯ͠ɺ߈ܸऀ͕༻ҙͨ͠ѱҙͷ͋ΔεΫϦϓτΛར༻ऀͷݩʹ ૹΓࠐΜͰ࣮ߦͤ͞Δ߈ܸख๏ɻ 9
XSSͷΈ 10 Source: https://yamory.io/blog/about-xss/
ReactͷXSS
dangerouslySetInnerHTML 12 ▪ dangerouslySetInnerHTMLͱ ɾReactެࣜͷΤεέʔϓΛແޮԽ͢ΔΦϓγϣϯ ɾHTMLͱͯ͠ೝ͍ࣝͤͨ͞߹ͳͲʹར༻͢Δ
dangerouslySetInnerHTML 13 ▪ dangerouslySetInnerHTMLͱ ɾReactެࣜͷΤεέʔϓΛແޮԽ͢ΔΦϓγϣϯ ɾHTMLͱͯ͠ೝ͍ࣝͤͨ͞߹ͳͲʹར༻͢Δ DEMO: https://codesandbox.io/s/react-xss-example-forked-9n3exm
dangerouslySetInnerHTML 14 ▪ରࡦɿ ɾΘͳ͍ɻͲ͏ͯ͠ར༻͍ͨ͠߹ɺపఈతʹΤεέʔϓΛߦ͏ɻ ɾdompurifyͳͲͷϥΠϒϥϦΛ͏͜ͱͰɺXSSͷΛղܾͰ͖Δɻ https://github.com/cure53/DOMPurify
hrefଐੑɺઌ಄͕javascript:͔Β࢝·Δ߹ͦΕҎ߱ͷจࣈྻΛ javascriptͱ࣮ͯ͠ߦ͞ΕΔ Javascript: εΩʔϜ 15
hrefଐੑɺઌ಄͕javascript:͔Β࢝·Δ߹ͦΕҎ߱ͷจࣈྻΛ javascriptͱ࣮ͯ͠ߦ͞ΕΔ Javascript: εΩʔϜ 16 DEMO: https://codesandbox.io/s/react-xss-example-forked-g8hs86
▪ରࡦɿ ɾεΩʔϜΛhttp:// ͔ https://ͷΈʹ੍ޚ͢Δ ɾઌ಄ʹ / Λ͚ͭΔ Javascript: εΩʔϜ 17
DEMO: https://codesandbox.io/s/react-xss-example-forked-g8hs86
JSON.stringify(str) 18 ੬ऑ෦ ҎԼͷؚ͕·ΕΔͱɺXSS͕ੜ͡Δ Server Renderingͷ࣌ʹɺReactଆͰ͑ΔΑ͏ʹɺԼهͷΑ͏ͳίʔυ͕͋Δ
19 ID/ύεϫʔυ͕࿙Εͳ͔ͬͨΒຊʹେৎʁ
20 ͦΜͳ͜ͱͳ͍Ͱ͢Α
21 DEMO
·ͱΊ
·ͱΊ 23 ɾ࠷ଟ͍੬ऑੑXSS ɾXSSରࡦʹจࣈྻΛΤεέʔϓ͢Δ ɾXSSͷݪཧΛΒͳ͍ͱɺ؆୯ʹXSSͷ੬ऑੑΛ࡞ΓࠐΜͰ͠·͏ͷͰɺXSSͷཧղඞཁ ɾID/ύεϫʔυΛΒͳͯ͘ɺCookieใ͕Θ͔ͬͨΒɺϩάΠϯͰ͖ͯ͠·͏ͷͰɺ PCΘͳ͍࣌ඞͣը໘ΛϩοΫ͠·͠ΐ͏
CarstayɺઈࢍΤϯδχΞืूதͰ͢ʂ 24 ˒ CTOީิΤϯδχΞ ɾϑϩϯτΤϯυΤϯδχΞ ɾΞϓϦΤϯδχΞ ɾαʔόʔαΠυΤϯδχΞ ։ൃݴޠɿTypescriptɹ։ൃϑϨʔϜϫʔΫɿReactJS, React NativeɹWebαʔόɿNodeJS
ͥͻ͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ ⏬
25 ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ