はじめに
Webアプリ開発を学習する上でXSS、CSRFよく聞きますが、フレームワークがうまい具合に対処してくれていたので、結局わからないまま時が過ぎました。
そこで今回は、これらの脅威をまとめてみようと思います。
XXS(クロスサイトスクリプティング)
攻撃者がウェブページに悪意のあるスクリプト(JavaScriptなど)を埋め込む攻撃。
他ユーザーがアクセスした時に、スクリプトが実行され、ユーザの情報を盗んだり、セッションをハイジャックされる。
攻撃の仕組み
- ユーザー入力の未検証: ユーザーが入力したデータ(例:フォームやコメント欄)をそのまま表示する際に、スクリプトコードを含んだデータが実行されてしまう。
- スクリプトの埋め込み方法: 攻撃者は、フォームやURLパラメータにスクリプトコード<script>タグを埋め込んでWebページに送信する。このスクリプトがページ内で実行されることで、攻撃が成立。
誰が被害を受けるか
主にWebアプリケーションを利用している一般のユーザー。
被害例
- セッション情報の流出: 攻撃者がユーザーのセッションIDを取得し、ログイン状態を乗っ取る。
- 個人情報の流出: ユーザーが入力したクレジットカード情報やパスワードが盗まれる。
CSRF(クロスサイトリクエストフォージェリ)
攻撃者がユーザーの認証情報を使って、ユーザーが意図しないリクエストをWebアプリケーションに送信させる攻撃です。ユーザーがログインしている状態で悪意のあるリンクやフォームをクリックさせることで、攻撃者はユーザーの権限を持つリクエストを不正に送信できます。
攻撃の仕組み
- 認証された状態でのリクエスト送信:ユーザーがログインしている状態で、攻撃者が悪意のあるリンクや画像を埋め込んだWebページを提供します。ユーザーがそのページを訪問すると、攻撃者はユーザーの権限で不正なリクエストを送信させることができる。
- リクエストの偽造方法: 攻撃者は、ターゲットのWebアプリケーションに対して、ユーザーが意図しないリクエスト(例えば、金銭送金やアカウント変更)を送信させる。
誰が被害を受けるか
他サービスにログイン状態のユーザー。
被害例
- 金銭送金: ユーザーが銀行にログインしているとき、攻撃者が不正な送金リクエストを送信させ、金銭を盗む。
- アカウント設定の不正変更: 攻撃者がユーザーのアカウント設定(メールアドレス変更など)を勝手に変更させる。