XSSとCSRFの違いメモ

3分でわかるXSSとCSRFの違い

XSS

ユーザーがWebページにアクセスすることで不正なスクリプトが実行されてしまう脆弱性または攻撃手法

xss

XSSによる被害例

攻撃者による不正ログイン(なりすまし)
利用者のCookieが攻撃者の手に渡ることで、Cookie内にある利用者のセッション情報がそのまま使用されてしまい、利用者の名をかたってサービスを使用されてしまう危険性があります。

XSSへの代表的な対策

Webページに出力するデータのエスケープ処理
Webページの出力に際して特別な意味を持つ文字列(例えば「<」、「&」など)は単なる文字列として出力するようにしましょう。また、エスケープの対象としては、利用者が画面から入力した値はもちろん、外部システムからのデータなどWebページの出力対象となるものは必ずエスケープすることが重要

CSRF

Webアプリケーション利用者自身が意図しない処理が実行されてしまう脆弱性または攻撃手法

csrf

CSRFによる被害例

利用者の意図しないWebアプリケーション上の処理実行
図でも表したように、本来はログインした利用者のみが許される記事の投稿処理などがあげられます。

CSRFへの代表的な対策

Formページ返却時のトークン付与
今回の例でいうと、はじめに掲示板への書き込み画面を表示する際にサーバがクライアントに対して特定の文字列(トークン)を設定します。実際に書き込みのリクエストがあった際にサーバーが「この人に送ったトークンと同じトークンがリクエストに入ってる?」と確認することで、攻撃者からの不正なリクエストを防ぐことができます。これは、攻撃者は利用者に送信したトークンの値を知らないためです

XSSとCSRFの違い

観点 XSS CSRF
実行される場所 Webブラウザ(Client) Webアプリサーバ(Server)
実行可能な処理 基本的に自由*1 Webアプリで定義された処理
実行の前提 特になし Webアプリにログイン済み*2

*1 JavaScriptで実行可能な範囲であればという意味です
*2 Webアプリ利用者(被害者)がCSRF脆弱性を持つWebアプリケーションに対してログイン済みという意味です

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×