【くろすさいとすくりぷてぃんぐ】
XSS(クロスサイトスクリプティング) とは?
最終更新:
💡 表示するはずの文字が、動くコードになる罠
信頼できない入力などがWebページのコードとして解釈され、利用者のブラウザーで意図しないスクリプトなどが動く脆弱性・攻撃。表示先に合う出力処理が重要です。
📌 このページのポイント
XSSって、何が起きる攻撃?
たとえばコメントを表示するとき、投稿内容を普通の文字ではなく動くコードとして解釈してしまうと、見た人のブラウザーで意図しない処理が動くことがある。情報の窃取や、利用者の権限を使った不正操作につながるんだ。
Stored、Reflected、DOM-basedって違うの?
文字をエスケープすれば防げる?
どこに出すかに合う処理が必要だよ。HTMLの本文、属性、URL、JavaScriptでは扱いが違う。普通のdivなどに文字を表示するならtextContentのような方法を使い、入力をむやみにHTMLやコードとして解釈させないことが大事なんだ。
Reactを使っていれば大丈夫?
CSPやHttpOnlyも役立つの?
CSPはコードなどの読み込みや実行を制限する追加の防御になる。HttpOnlyはそのCookieをJavaScriptから読ませない設定だよ。ただしCookieが読めなくても、ページ内の不正操作などは残り得る。どちらも安全な出力処理の代用にはならないんだ。
まとめ:ざっくりこれだけ覚えればOK!
「XSS」って出てきたら「Webページで不正なコードを動かされる攻撃」と思えばだいたいOK!
📖 おまけ:英語の意味
「Cross-Site Scripting」 = クロスサイトスクリプティング
💬 略称はXSS。初期のサイトをまたぐ情報窃取から名前が付いたけれど、現在は別サイトからの攻撃に限らないよ