CSRF とは?
Cross-Site Request Forgeries
偽装した Request を Cross-Site から送信する (攻撃の) こと。
Forgeries は偽造するという意味。
攻撃の流れ
- 利用者は、 Web サイトに通常通りログイン
- サイト(正規のサイト)がセッションを発行
- ログインした状態で、利用者が偽サイトにアクセス
- 偽サイトアクセスにより、意図せぬリクエストが利用者のブラウザから正規のサイトに飛び、セッションを利用されて意図せぬ設定変更、サイト改ざんなどが行われる
発生しうる脅威
不正な送金、サイトの改ざんなど
対策
- csrf トークン
- 変更等の処理前に、再ログインを要求する
- Referer のチェック
Ref
用語
Cross-Site
Cross Origin のサイト、または Cross Domain のサイトのこと。
ある Web サイトから見て、同一オリジンでない Web サイトのこと。
同一オリジンかどうかは、 オリジン(プロトコル、URL、ポートのセット)で判定する。
プロトコル (http:// or https:// or その他)、 URL (example.com)、ポートが一致していれば、同一オリジンとなる。
異なる場合は、クロスオリジンとなる。 "Cross-Site" とは、あるサイトから見て、クロスオリジンの Web サイトのことを指している。
大抵は、自身のサイト以外の Web サイトとなる。
Referer
HTTP ヘッダのひとつ。 HTTP Request ヘッダのひとつ。
直前にユーザが見ていたページ(リンク元 URL)を表す情報。
簡単に偽造可能であるが、 CSRF 対策としては有効とのこと。
※ CSRF 攻撃に晒されるユーザは正規のブラウザを利用するため、正規のブラウザのセキュリティが破られなければ、 Referer が偽造されて送信されることはないと考えられる。