XSS と CSRF のわかりやすい説明記事をメモ.

ockeghem(徳丸浩)の日記 がとても勉強になったので引用させていただき, その下に自分の(勝手な)解釈をメモ.

XSSはブラウザ上でスクリプトが動き、CSRFはサーバー上でスクリプトが動く

XSS が発生しやすい場所は確認画面.
XSSは先の日記で書いたように, 表示部分にスクリプトを埋め込むというものなので, 表示内容を外部からコントロールできる部分に発生し得る.

CSRF が発生しやすい場所は, 登録画面.
CSRFはサーバー上で副作用を起こさせるワザなので, 副作用(DBの更新、パスワードの変更)のある画面(C)が対象となる.

XSS の場合は, フォーム入力の段階で, 攻撃スクリプトが埋め込めれ,
確認画面閲覧時, 本来とは異なる表示に変更されてしまう可能性がある.

一方で, csrf は, 確認→実行の段階で, POSTのデータを改ざんされ, 登録ユーザーが指定したパスワードが書き換えられてDBに登録されてしまう可能性がある.

だから, これらの対策は異なってくる.
XSS はフォームに入力された文字をサニタイズしなければならない(twitter でためしてみるとわかりやすい. html タグを入力してもちゃんと無効化され, ただの記号として表示される)し,
csrf はconfirm から execute に認証用の鍵を渡していて, 受け取り側のプログラムでそれをチェックしている.



Ref.
ockeghem(徳丸浩)の日記
http://d.hatena.ne.jp/ockeghem/20071203/p1
http://d.hatena.ne.jp/ockeghem/20071205/p1