Show Menu
トピック×

CSRF 攻撃の防止

CSRF 攻撃の仕組み

クロスサイトリクエストフォージェリ(CSRF)とは、有効なユーザーのブラウザーが悪質なリクエストの送信(iFrame を介する場合あり)に利用される、Web サイトの脆弱性のことです。ブラウザーは Cookie をドメインベースで送信するので、ユーザーが現在アプリケーションにログインしている場合、ユーザーのデータが侵害される可能性があります。
例えば、ブラウザーで管理コンソールにログインしている場合を想定します。リンクを含む電子メールメッセージを受信したとします。リンクをクリックすると、ブラウザーで新しいタブが開かれます。開かれたページには、認証済みの AEM Forms セッションの Cookie を使用して forms サーバーに悪質なリクエストを行う非表示の iFrame が含まれています。User Management は有効な Cookie を受け取るので、そのリクエストが渡されることになります。

許可されているリファラーの機能の仕組み

AEM Forms にはリファラーのフィルタリング機能が用意されており、CSRF 攻撃の防止に役立ちます。以下にリファラーのフィルタリングが機能する仕組みを示します。
  1. forms サーバーが、呼び出しに使用される HTTP メソッドを確認します。
    • POST の場合、forms サーバーはリファラーのヘッダーのチェックを実行します。
    • GET の場合、forms サーバーはリファラーをチェックしません。ただし、CSRF_CHECK_GETS が true に設定されている場合は除きます。この場合、forms サーバーはリファラーヘッダーを確認します。CSRF_CHECK_GETS は、アプリケーションの web.xml ファイル内で指定されます。(『 堅牢化とセキュリティガイド 』の「クロスサイト要求偽造攻撃からの保護」を参照。)
  2. forms サーバーが、要求された URI がホワイトリストに登録されているかどうかを確認します。
    • URI がホワイトリストに登録されていた場合、サーバーはリクエストを渡します。
    • リクエストされた URI がホワイトリストに登録されていなかった場合、サーバーはリクエストのリファラーを取得します。
  3. リクエスト内にリファラーが含まれている場合、サーバーはそれが許可されているリファラーかどうかを確認します。許可されているリファラーの場合、サーバーはリファラーの例外かどうかを確認します。
    • 例外の場合、リクエストはブロックされます。
    • 例外でない場合、リクエストは渡されます。
  4. リクエスト内にリファラーが含まれていない場合、サーバーは null リファラーが許可されているかどうかを確認します。
    • null リファラーが許可されている場合、リクエストは渡されます。
    • null リファラーが許可されていない場合、サーバーはリクエストされた URI が null リファラーの例外であるかどうかを確認し、確認結果に応じてリクエストを処理します。

許可されているリファラーの設定

Configuration Manager を実行すると、許可されているリファラーリストにデフォルトのホストおよび IP アドレス、または forms サーバーが追加されます。このリストは管理コンソールで編集できます。
  1. 管理コンソールで、設定/User Management/設定/許可されているリファラー URL を設定をクリックします。許可されているリファラーリストがページ下部に表示されます。
  2. 許可されているリファラーを追加するには
    • ホストの名前または IP アドレスを「許可されているリファラー」ボックスに入力します。一度に複数の許可されているリファラーを追加するには、各ホストの名前または IP アドレスを 1 行ごとに入力します。
    • 「HTTP ポート」と「HTTPS ポート」ボックスについて、HTTP または HTTPS のいずれか、または両方のポートを指定します。これらのポートを空のままにした場合、デフォルトのポート(HTTP ではポート 80、HTTPS ではポート 443)が使用されます。ボックスに 0 (ゼロ)を入力した場合、そのサーバー上のすべてのポートが有効化されます。特定のポート番号を入力すると、そのポートのみが有効化されます。
    • 「追加」をクリックします。
  3. 許可されているリファラーリストからエントリを削除するには、リストから項目を選択して、「削除」をクリックします。
    許可されているリファラーリストが空の場合、CSRF 機能は動作を停止し、システムのセキュリティが低下します。
  4. 許可されているリファラーリストを変更したら、AEM forms サーバーを再起動してください。