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
XSS?なんですかそれ?
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ryoAccount
July 20, 2025
Technology
84
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
XSS?なんですかそれ?
Security.any #05 今だから言えるセキュリティLT 登壇資料
https://security-any.connpass.com/event/356209/
ryoAccount
July 20, 2025
More Decks by ryoAccount
See All by ryoAccount
AIエージェントと実装する安全なコード
ryoaccount
0
30
あなたの知らないFirewallの世界
ryoaccount
0
93
そこにAIはあるか?
ryoaccount
0
84
最大のアウトプット術は問題を作ること
ryoaccount
0
490
Code Reliability
ryoaccount
0
26
S3は問答無用で非公開!!
ryoaccount
0
38
0から始めるセキュリティ
ryoaccount
0
140
エンジニアが考えるUI/UX
ryoaccount
0
30
Other Decks in Technology
See All in Technology
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
230
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
290
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
210
なぜJMBC(Japan MCP Business Community)? MCPってどう活用できるの?
cdataj
0
110
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
2.8k
人間はどの意思決定を手放せるのか
kawasima
7
2.4k
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
220
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
160
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
480
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
240
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
160
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
The Spectacular Lies of Maps
axbom
PRO
1
990
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Believing is Seeing
oripsolob
1
220
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
490
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Designing Powerful Visuals for Engaging Learning
tmiket
1
540
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
720
Transcript
Security.any #05 今だから言えるセキュリティLT 2025.07.16 RYO XSS?なんですかそれ?
某人材系サービスを展開するテック企業にて主に 認証基盤の開発やセキュリティ向上の推進に従事 どうすればDevSecOpsを組織に浸透させられるか 日々悩み中 好きな脆弱性はXSS 2 RYO X @RYO_nami
(おさらい)XSS ? • XSS(Cross-Site Scripting)は、悪意のあるスクリプトをWebページ に埋め込み、ブラウザ上で実行させる攻撃手法 • 入力フォームやURLパラメータなどを通じてスクリプトを注入し、以下のよ うな被害を引き起こす ◦
Cookieやセッション情報の搾取 ◦ フィッシングサイトへの誘導 ◦ Webページの見た目や内容の改ざん • 大きく3種類ある ◦ 反射型:攻撃者が作成したリンクをクリックすることで、スクリプトが実行される ◦ 格納型:スクリプトがサーバに保存され、他ユーザに配信される ◦ DOM-based:WebページのHTMLが書き換えられて、スクリプトが実行される
あの頃は...
あの頃は... XSS なんて知らんかったなぁ...
XSSとの出逢い • エンジニア(いわゆるSE)として社会人生活スタート🌸 • 新卒として最初に配属されたプロジェクトで、MVCモデルで作られたWebサ イトの開発・保守を担当することになった • 初めてHTMLに触れる(当時はまだHTML4.01の頃) • 当時はまだまだガラケーが主流、WindowsはXPが主流、ブラウザはIEが主
流、アイドルはAKB48が主流
当時はこんなエラーメッセージを出していた メールアドレス 環境依存文字が含まれています: error_㈱@gmail.com error_㈱@gmail.com なぜかテキストボックスに入力された文字を 全量出すというやや謎の仕様だった (当時は㈱や㍑や①などが許容されていなかった)
当時の私はふと思った メールアドレス 環境依存文字が含まれています: error_㈱@gmail.com error_㈱@gmail.com メールアドレスにhtmlタグ入れたら どうなるんやろ??
htmlタグ入れてみた メールアドレス 環境依存文字が含まれています: <input type="text" value="㈱" /> ㈱
htmlタグ入れてみた メールアドレス 環境依存文字が含まれています: <input type="text" value="㈱" /> ㈱ テキストボックスになるやないか/(^o^)\
当時の私はさらにふと思った メールアドレス 環境依存文字が含まれています: <input type="text" value="㈱" /> ㈱ JavaScriptのコード入れたら どうなるんやろ??
scriptタグ入れてみた メールアドレス 環境依存文字が含まれています: <script>alert("㈱")</script> (domain).com ㈱ OK
scriptタグ入れてみた メールアドレス 環境依存文字が含まれています: <script>alert("㈱")</script> (domain).com ㈱ OK アラートダイアログ出るやないか/(^o^)\
そして、XSSとの別れ(?) • 当時は「入力がhtmlとして解釈されるのか、おもろいなぁ~」くらいの軽い 気持ちで受け流していた • 結局、堅苦しい会社の規則に嫌気がさして、XSSを見なかったことにして、 プロジェクトを去るのでした...(転職)
XSSは今も昔も注意すべき存在 昔:2010年の記事(ITmedia)
XSSは今も昔も注意すべき存在 今:2025年の記事(ITmedia)
XSSの対策方法 • 出力時のエスケープ処理( 例:< → < ) ◦ VueやReactなどのフレームワークは自動的にエスケープ処理を行ってくれる •
Content Security Policy(CSP)の導入 • outerHTML/innerHTMLの使用を避ける • セキュリティ診断の実施&検出
XSSの対策方法 • 出力時のエスケープ処理( 例:< → < ) ◦ VueやReactなどのフレームワークは自動的にエスケープ処理を行ってくれる •
Content Security Policy(CSP)の導入 • outerHTML/innerHTMLの使用を避ける • セキュリティ診断の実施&検出 ここに関しては最近、 HTMLの仕様に変更が!
HTML:属性値内の < と > がエスケープされるように!! chrome for developers (2025/06/12)
Q. 次のconsole.log()の出力結果は? <div data-content="<p>hello</p>"></div> <script> const div = document.querySelector("div"); console.log(div.outerHTML);
// ★ </script>
Q. 次のconsole.log()の出力結果は? <div data-content="<p>hello</p>"></div> <script> const div = document.querySelector("div"); console.log(div.outerHTML);
// ★ </script> A. <div data-content="<p>hello</p>"></div>
Q. 次のconsole.log()の出力結果は? <div data-content="<p>hello</p>"></div> <script> const div = document.querySelector("div"); console.log(div.outerHTML);
// ★ </script> 属性値内の < と > がエスケープされるようになった A. <div data-content="<p>hello</p>"></div>
変わったのは? • HTML文字列を取得する場合のみ、< と > がエスケープされる ◦ innerHTML ◦ outerHTML
◦ getHTML() • DOM APIを使って属性値を取得する場合、以前と変わらず ◦ dataset ◦ attributes ◦ getAttributes()
なぜこの変更が必要だったのか? • ミューテーションXSS(mXSS)を防ぐため ◦ mXSS:ブラウザのHTMLパーサやDOMの自動修正機能を悪用する XSS • 通常のXSS対策では入力値のエスケープやサニタイズを行うが、mXSSではブ ラウザが勝手に「元に戻して」しまうため、意図せずスクリプトが復元され てしまう
◦ 例:攻撃者が一見すると無害な HTMLタグを仕込む ▪ <svg><desc><img src=x onerror=alert('XSS')></desc></svg> ◦ ブラウザがHTMLをパースする際、 <img > を <img> タグに変換してしまう ▪ <svg><desc><img src=x onerror=alert('XSS')></desc></svg> ◦ onerror=alert(“XSS”) が発火し、XSSが成立
いつからブラウザに反映される? • Chrome: 反映済み(ver138) • Firefox: 反映済み(ver140) • Safari: 2025年9月予定(ver26)
まとめ • XSSは悪意のあるスクリプトをWebページに埋め込み、ブラウザ上で実行さ せる攻撃手法 • XSSは昔からあるが今も現役で悪用されている危険な脆弱性 • HTMLの仕様が変更されmXSSに対して安全性が増した • とは言っても、まだ全てのブラウザに適用されたわけではないので、開発者
は今後も引き続きXSS対策が必要 ◦ (セキュリティ対策に終わりはない ...)
ご清聴ありがとうございました