概要
基本情報技術者のテキストなどでふんわり知ってた単語について改めてまとめました。
誤りなどありましたらご指摘いただけますと幸いです。
クロスサイトスクリプティング(XSS)とは
XSSについて
- 悪意のあるスクリプトをWebページに注入することで、Webページの閲覧者のブラウザ上で悪意のある動作を実行する攻撃のこと。
- XSS攻撃は、脆弱性のあるWebアプリケーションにスクリプトを仕込み、そこにアクセスした被害者から情報を盗むことが目的。
XSS攻撃の手順(掲示板サービスの例)
- 攻撃者は、脆弱性のある掲示板サービスに悪意のあるスクリプトを仕込む。
- スクリプトが実行されるよう、攻撃者は、被害者にスクリプトを実行するよう誘導する。
- 被害者が誘導に従いスクリプトを実行すると、悪意のあるスクリプトが被害者のブラウザ上で実行される。
- 悪意のあるスクリプトによって、被害者のブラウザからCookie情報やセッションIDなどの機密情報が盗み出される。
- 盗み出した機密情報は、攻撃者が外部のサーバーに送信することで、攻撃者が情報を得ることができる。
XSS攻撃による機密情報の送信方法
-
攻撃者が使用するスクリプトは、実行した被害者のcookie情報などをどこかに送信するもの。
-
攻撃者は、以下のような方法を使用して、機密情報を送信する。
- 攻撃者が用意したWebサイトにCookie情報を送信する。
- JavaScriptを使用して、HTTP GETまたはPOSTリクエストを送信する。
-
攻撃者は、これらの方法を使用して、被害者から取得した機密情報を自分のサーバーに送信することができる。
-
このような攻撃を防ぐためには、Webアプリケーション開発者が適切なセキュリティ対策を講じる必要がある。
クロスサイトリクエストフォージェリー(CSRF)とは
攻撃者が認証済みユーザーの代わりに意図しない操作を行わせる攻撃手法
攻撃の流れは以下のようになる。
- 攻撃者は、ユーザーがアクセスするWebサイトに偽のフォームを用意する
- ユーザーがログインしている状態で、偽のフォームをクリックすると、そのフォームの内容がWebサイトに送信する
- Webサイトは、ユーザーがログインしていることを確認し、受信したフォームの内容を処理する。
- 攻撃者が用意したフォームによって、意図しない操作(例えば、パスワード変更、注文のキャンセル、不正なトランザクションなど)が行われる。
つまり?
- アカウント乗っ取れるということ
- この攻撃は、被害者が攻撃者が用意した偽のフォームなどに意図せずアクセスした場合に発生することが多い。
- たまにメールで届く偽ドメインのamazon偽装サイトみたいなやつ
- このような攻撃を防ぐために、サーバー側ではトークンを発行して、正しいフォームからのリクエストであることを確認するCSRF対策が用いられる。
コンテンツセキュリティポリシー(CSP)とは
Webアプリケーションがユーザーに送信するコンテンツのセキュリティを強化するための仕組み。
CSPを使うことで、悪意のあるコードを含むWebページや悪意のあるコードが挿入された広告を表示することを防ぐことができる。
具体的にはWebサイトがクライアントに送信するレスポンスヘッダーにCSPルールを含めることで、ブラウザがWebページに含めることができるリソースの種類とオリジンを制御することができる。
例えば以下のようにCSPルールを指定することで、ユーザーのブラウザに対して「このWebページには自身のドメイン以外からのJavaScriptファイルを読み込ませないように」と指示することができる。
Content-Security-Policy: script-src 'self'
また以下のようにCSPルールを指定することで、ユーザーのブラウザに対して「このWebページにはJavaScriptファイルを含む外部リソースを一切読み込ませないように」指示することができる。
Content-Security-Policy: script-src 'none'; object-src 'none'; base-uri 'self'