CSRF
CSRF(クロスサイトリクエストフォージェリ)は、攻撃者がログイン中のユーザーを騙して、知らないうちに悪意あるリクエストを対象サイトへ送らせる脆弱性である。
目的
攻撃者が被害者のセッションを借りて不正な操作を行うのを防ぐ。
メカニズム
攻撃者は対象サイトへリクエストを送る <form> や <img> を含む悪意あるページを設置する。ブラウザはクッキーを自動的に付加し、サーバーはそれをユーザー本人と誤認する。防御策: CSRF トークン(同期トークン)、SameSite クッキー、Origin/Referer ヘッダーの確認。
ユースケース
- なりすましの銀行振込
- アカウント設定の変更
- 投稿やコメントの送信
- データ削除の操作
例
- 入力
<form action="bank.com/transfer" method="POST">OutputTransfer initiated riding on cookiesCross-site forgery
よくあるエラー
- Relying solely on cookie authentication without a CSRF token
- Add a CSRF token or SameSite=Strict
関連用語
XSS
XSS(クロスサイトスクリプティング)は、攻撃者が悪意あるスクリプトをページに注入し、他のユーザーのブラウザで実行させる攻撃である。保存型、反射型、DOMベース型がある。 用語集
Cookie
Cookie とは、サーバーが設定しブラウザが保存するキーバリューペアであり、同一オリジンへのリクエストに自動的に付送されてセッションと状態の管理に使われる。 用語集
SameSite Cookie
SameSite Cookie 属性(Strict/Lax/None)は、クロスサイトリクエスト時にブラウザが Cookie を送信するかどうかを制御し、CSRF 攻撃への防御に機能する。 用語集
SQL Injection
SQL インジェクションは、攻撃者が悪意のある SQL 断片をクエリ文字列に継ぎ足し、データベースに意図しないコマンドを実行させる攻撃である。 用語集