クロスサイトフォージェリを防ぐ方法
クロスサイトフォージェリ(XSRFまたはCSRF)は、クロスサイトリクエストフォージェリ、セッションライディング、ワンクリック攻撃などのさまざまな名前でも知られていますが、防ぐのが難しいWebサイトの悪用です。 Webブラウザーを不正に操作して、不正なコマンドをリモートサーバーに送信します。 クロスサイト偽造攻撃は、本物の資格情報でWebサイトにログインしたユーザーに対してのみ機能します。 その結果、Webサイトからログアウトすることは、簡単で効果的な予防策となります。 Web開発者は、ランダムに生成されたトークンを使用してこの種の攻撃を防ぐことができますが、リファラーを確認したり、Cookieに依存したりしないでください。
クロスサイトフォージェリエクスプロイトは、「混乱した代理攻撃」として知られるWebブラウザーを標的にするのが一般的です。ユーザーに代わって行動していると信じて、ブラウザーは不正なコマンドをリモートサーバーに送信します。 これらのコマンドは、ウェブページのマークアップコードの一見無害な部分の中に隠れている可能性があります。つまり、画像ファイルをダウンロードしようとするブラウザーが実際にコマンドを銀行、オンライン小売業者、またはソーシャルネットワーキングサイトに送信している可能性があります。 一部のブラウザには、クロスサイトフォージェリ攻撃を防ぐように設計された対策が含まれており、サードパーティのプログラマーはこれらの対策を欠く拡張機能またはプラグインを作成しています。 これらのプログラムはクロスサイト偽造攻撃に対しても脆弱であるため、優先クライアントでハイパーテキストマークアップ言語(HTML)電子メールを無効にすることもお勧めします。
クロスサイト偽造攻撃は、正当にWebサイトにログインしたユーザーに依存しているためです。 そのことを念頭に置いて、このような攻撃を防ぐ最も簡単な方法の1つは、使い終わったサイトから単純にログアウトすることです。 銀行や証券会社など、機密データを扱う多くのサイトは、一定の非アクティブ期間後に自動的にこれを行います。 他のサイトは反対のアプローチを取り、ユーザーが数日または数週間持続的にログインできるようにします。 これは便利かもしれませんが、CSRF攻撃にさらされます。 「このコンピューターで記憶する」または「ログインしたままにする」オプションを探して無効にし、セッションが完了したら必ずログアウトリンクをクリックしてください。
Web開発者にとって、クロスサイト偽造の脆弱性を排除することは、特に困難な作業です。 リファラーとCookieの情報をチェックしても、CSRFの悪用は正当なユーザー資格情報を利用し、この情報はなりすましやすいため、あまり保護されません。 より良い方法は、ユーザーがログインするたびに使い捨てトークンをランダムに生成し、ユーザーが送信するリクエストにトークンを含めることを要求することです。 購入や口座振替などの重要なリクエストの場合、ユーザーにユーザー名とパスワードの再入力を要求することで、リクエストの信頼性を確保できます。