CSRF 攻撃の防止

CSRF 攻撃の仕組み

クロスサイトリクエストフォージェリ(CSRF)とは、有効なユーザーのブラウザーが悪質なリクエストの送信(iFrame を介する場合あり)に利用される、Web サイトの脆弱性のことです。ブラウザーは Cookie をドメインベースで送信するので、ユーザーが現在アプリケーションにログインしている場合、ユーザーのデータが侵害される可能性があります。

例えば、ブラウザーで管理コンソールにログインしている場合を想定します。リンクを含む電子メールメッセージを受信したとします。リンクをクリックすると、ブラウザーで新しいタブが開かれます。開かれたページには、認証済みの AEM Forms セッションの Cookie を使用して forms サーバーに悪質なリクエストを行う非表示の iFrame が含まれています。User Management は有効な Cookie を受け取るので、そのリクエストが渡されることになります。

リファラー:リクエ ストの送信元のソースページのアドレス。例えば、site1.com 上の Web ページに site2.com へのリンクが含まれています。このリンクをクリックすると、リクエストが site2.com にポストされます。このリクエストは site1.com のページを発信元としているので、このリクエストのリファラーは site1.com です。

許可されたURI: URIは、/adminuiや/contentspaceなど、リクエスト対象のformsサーバー上のリソースを識別します。一部のリソースでは、外部のサイトからリクエストがアプリケーションにアクセスすることができます。これらのリソースは、許可されたURIと見なされます。 formsサーバーは、許可されたURIからリファラーのチェックを実行しません。

nullリファラー: 新しいブラウザーウィンドウまたはタブを開き、アドレスを入力してEnterキーを押すと、リファラーはnullになります。リクエストはまったく新規で、親 Web ページから生成されたものではないので、このリクエストのリファラーはありません。AEM Forms サーバーは、以下の場合に null リファラーを受け取ることができます。

  • SOAP または REST エンドポイントで Acrobat からリクエストが送信された場合
  • AEM Forms の SOAP または REST エンドポイントで任意のデスクトップクライアントから HTTP リクエストが送信された場合
  • ブラウザーの新しいウィンドウが開かれ、任意の AEM forms Web アプリケーションログインページの URL が入力された場合

SOAP および REST エンドポイントで null リファラーを許可してください。すべての URI ログインページ(/adminui、/contentspace、それらに対応するマッピングされたリソースなど)でも、null リファラーを許可してください。例えば、/contentspace に対してマップされたサーブレット /contentspace/faces/jsp/login.jsp は、null リファラーの例外とすることが必要です。この例外は、Web アプリケーションで GET フィルタリングを有効にしている場合にのみ必要です。null リファラーを許可するかどうかはアプリケーションで指定できますAEMフォームの堅牢化とセキュリティの「クロスサイト要求偽造攻撃からの保護」を参照してください。

許可されているリファラーの例外: 許可されているリファラーの例外は、許可されているリファラーのリストのサブリストです。このリファラーの例外からの要求はブロックされます。許可されているリファラーの例外は、Web アプリケーション用です。許可されているリファラーのサブセットが特定のWebアプリケーションの呼び出しを許可されていない場合、許可されているリファラーの例外を使用してリファラーをブロックリストできます。 許可されているリファラーの例外は、アプリケーションの web.xml ファイル内で指定されます(「ヘルプとチュートリアル」ページの「AEM Forms の堅牢化とセキュリティ」内の「クロスサイト要求偽造攻撃からの保護」を参照。)

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

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 サーバーを再起動してください。

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now