ブロック紹介スパム

次の例は、Fastly Edge Dictionaryをカスタム VCL スニペットで設定して、Adobe Commerce on cloud infrastructure サイトからのリファラルスパムをブロックする方法を示しています。

NOTE
ステージング環境にカスタム VCL設定を追加して、実稼動環境に対して実行する前にテストすることをお勧めします。

前提条件:

  • Fastly CDN を使用するように環境を設定する必要があります。 詳しくは、Fastly サービスの設定 ​ を参照してください。

  • Magento 2 の Fastly CDN モジュールが最新バージョンであることを確認してください。 Fastly モジュールのアップグレード ​ を参照してください。

  • Fastly サービスの環境設定を確認します。 Fastly キャッシュの確認 ​ を参照してください。

  • ステージング環境と実稼動環境にアクセスするには、管理者資格情報が必要です。

  • 偽の紹介URLがないかサイトログを確認し、ブロックするドメインのリストを作成します。

リファラーブロックリストの作成

Edge ディクショナリは、VCL スニペット処理中にVCL関数にアクセス可能なキーと値のペアを作成します。 この例では、ブロックするリファラーweb サイトのリストを提供するエッジディクショナリを作成します。

  1. 管理者に ログインします。

  2. Stores > Settings > Configuration > Advanced > System​をクリックします。

  3. フルページキャッシュ > Fastly Configuration > Edge ディクショナリ​を展開します。

  4. 辞書コンテナを作成します。

    • コンテナを追加」をクリックします。

    • コンテナ ページで、辞書の名前referrer_blocklistを入力します。

    • 変更の後に​ アクティブ化 ​を選択して、編集中のFastly サービス設定のバージョンに変更をデプロイします。

    • アップロード」をクリックして、辞書をFastly サービス設定に添付します。

  5. ブロックするドメイン名のリストをreferrer_blocklist辞書に追加します。

    • referrer_blocklist辞書の設定アイコンをクリックします。

    • 新しい辞書にキーと値のペアを追加して保存します。 この例では、各​ キー ​はブロックするリファラーURLのドメイン名で、​はtrueです。

      不正なリファラー辞書アイテムを追加

    • キャンセル」をクリックして、システム設定ページに戻ります。

  6. 設定を保存」をクリックします。

  7. ページ上部の通知に従ってキャッシュを更新します。

Edge ディクショナリについて詳しくは、Fastly ドキュメントのEdge ディクショナリの作成と使用および​ カスタム VCL スニペット ​を参照してください。

リファラースパムをブロックするためのカスタム VCL スニペットの作成

次のカスタム VCL スニペットコード(JSON形式)は、リクエストをチェックおよびブロックするロジックを示しています。 VCL スニペットは、リファラーサイトのホストをヘッダーにキャプチャし、ホスト名をreferrer_blocklist辞書のURLのリストと比較します。 ホスト名が一致する場合、リクエストは403 Forbidden エラーでブロックされます。

{
  "name": "block_bad_referrer",
  "dynamic": "0",
  "type": "recv",
  "priority": "5",
  "content": "if (req.http.Referer ~ \"^(.*:)//([A-Za-z0-9\-\.]+)(:[0-9]+)?(.*)$\") {set req.http.Referer-Host = re.group.2;}if (table.lookup(referrer_blocklist, req.http.Referer-Host)) {error 403 \"Forbidden\";}"
}

この例に基づいてスニペットを作成する前に、値を確認して、変更を加える必要があるかどうかを判断します。

  • name — VCL スニペットの名前。 この例では、block_bad_referrerを使用しました。

  • dynamic – 値0は、Fastly設定のバージョン管理されたVCLにアップロードする通常のスニペット ​を示します。

  • priority — VCL スニペットが実行されるタイミングを決定します。 このスニペットコードを実行する優先度は5です。このスニペットコードを実行すると、デフォルトのMagento VCL スニペット (magentomodule_*)のいずれかが優先度50に割り当てられます。 スニペットを実行するタイミングに応じて、各カスタムスニペットの優先度を50より高くまたは低く設定します。 優先度の低いスニペットが最初に実行されます。

  • type - VCL バージョンでスニペットを挿入する場所を指定します。 この例では、VCL スニペットはrecv スニペットです。 スニペットがVCL バージョンに挿入されると、デフォルトのFastly VCL コードの下、および任意のオブジェクトの上のvcl_recv サブルーチンに追加されます。

  • content – 改行なしで1行で実行するVCL コードのスニペット。

環境のコードを確認して更新したら、次のいずれかの方法を使用して、Fastly サービス設定にカスタム VCL スニペットを追加します。

  • 管理者からカスタム VCL スニペットを追加します。 管理者にアクセスできる場合は、この方法をお勧めします。 (Fastly バージョン 1.2.58以降が必要です)

  • JSON コードの例をファイル (例:allowlist.json)に保存し、Fastly API🔗を使用して アップロードします。 管理者にアクセスできない場合は、この方法を使用します。

カスタム VCL スニペットの追加

  1. 管理者に ログインします。

  2. ストア / 設定/構成 / 詳細 / システム​をクリックします。

  3. フルページキャッシュ > Fastly設定 > カスタム VCL スニペット​を展開します。

  4. カスタムスニペットを作成」をクリックします。

  5. VCL スニペット値を追加します。

    • 名前block_bad_referrer

    • 種類recv

    • 優先度5

    • VCL スニペットコンテンツ —

      code language-conf
      if (req.http.Referer ~ "^(.*:)//([A-Za-z0-9\-\.]+)(:[0-9]+)?(.*)$") {
        set req.http.Referer-Host = re.group.2;
      }
      if (table.lookup(referrer_blocklist, req.http.Referer-Host)) {
        error 403 "Forbidden";
      }
      
  6. 作成」をクリックします。

    ​ カスタムリファラーブロック VCL スニペットの作成

  7. ページが再読み込みされたら、「Fastly設定」セクションの「VCLをFastly​にアップロード」をクリックします。

  8. アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。

アップロードプロセス中に、更新されたVCL バージョンをFastlyが検証します。 検証が失敗した場合は、カスタム VCL スニペットを編集して問題を修正します。 次に、VCLをもう一度アップロードします。

NOTE
カスタム VCL スニペットを手動でアップロードする代わりに、環境内の$MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom ディレクトリにスニペットを追加できます。 このディレクトリのスニペットは、Commerce管理者で​_VCLをFastly_​にアップロードをクリックすると、自動的にアップロードされます。 Magento 2用Fastly CDN モジュールの自動カスタム VCL スニペットのデプロイメント ​を参照してください。

カスタム VCL スニペットの変更

  1. 管理者に ​ ログイン ​ します。

  2. ストア/設定/設定/詳細/システム をクリックします。

  3. フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。

    ​ カスタム VCL スニペットの管理 ​

  4. アクション 列で、編集するスニペットの横にある設定アイコンをクリックします。

  5. ページのリロード後、「Fastly 設定 _セクションの​Fastly に VCL をアップロード_ をクリックします。

  6. アップロードが完了したら、ページ上部の通知に従ってキャッシュを更新します。

WARNING
カスタム VCL スニペット UI オプションには、Adobe Commerce管理を通じて追加されたスニペットのみが表示されます。 Fastly API を使用してスニペットを追加する場合は、API を使用して ​ スニペットを管理 ​ します。

カスタム VCL スニペットの削除

  1. 管理者に ​ ログイン ​ します。

  2. ストア/設定/設定/詳細/システム をクリックします。

  3. フルページキャッシュ/Fastly 設定/カスタム VCL スニペット の順に展開します。

    ​ カスタム VCL スニペットの管理 ​

  4. アクション 列で、削除するスニペットの横にあるごみ箱アイコンをクリックします。

  5. 次のモーダルウィンドウで、「DELETE」をクリックし 新しいバージョンをアクティベートします。

WARNING
カスタム VCL スニペット UI オプションには、Adobe Commerce管理を通じて追加されたスニペットのみが表示されます。 Fastly API を使用してスニペットを追加する場合は、API を使用して ​ スニペットを管理 ​ します。
recommendation-more-help
commerce-on-cloud-help-cloud-guide