すべてのプロダクト
Search
ドキュメントセンター

CDN:リファラーホワイトリストまたはブラックリストを設定してホットリンク保護を有効にする

最終更新日:Mar 05, 2024

リファラーベースのホットリンク保護とは、リファラーヘッダーに基づくアクセス制御を指します。 たとえば、特定のリクエストのみがリソースにアクセスできるようにリファラーホワイトリストを設定したり、特定のリクエストをブロックするブラックリストを設定したりできます。 リファラーベースのホットリンク保護は、ユーザー ID を識別してフィルタリングを実行し、リソースを不正アクセスから保護します。 リファラーホワイトリストまたはブラックリストを設定した後、Alibaba Cloud CDN はユーザーIDに基づいてリクエストを許可またはブロックします。 リクエストが許可されている場合、Alibaba Cloud CDN はリクエストされたリソースのURLを返します。 それ以外の場合、Alibaba Cloud CDN はHTTPステータスコード403を返します。

背景情報

Referer ヘッダーは、HTTP リクエストのヘッダーセクションの要素であり、プロトコル、ドメイン名、クエリ文字列など、ソースアドレスに関する情報が含まれています。 Refererヘッダーは、リクエストのソースを識別するために使用されます。

リファラーベースのホットリンク保護は、リソースを不正アクセスから保護するように設計されたサーバー側のアクセス制御メカニズムです。 ユーザーがWebサイトにアクセスしてリンクをクリックすると、ブラウザはHTTPリクエストヘッダーにRefererフィールドを自動的に追加します。このフィールドには、リクエストの送信元のページのURLが指定されます。

重要
  • デフォルトでは、Alibaba Cloud CDN ではリファラーベースのホットリンク保護は無効です。 つまり、すべてのWebサイトがリソースにアクセスできます。

  • ドメイン名をリファラーホワイトリストまたはブラックリストに追加すると、ドメイン名と一致するワイルドカードドメイン名が自動的にホワイトリストまたはブラックリストに追加されます。 たとえば、リファラーホワイトリストまたはブラックリストにaliyundoc.comを追加すると、* .aliyundoc.comに一致するすべてのドメイン名に対してホットリンク保護が有効になります。

  • Rangeリクエストがドメイン名から開始されると、ブラウザはRefererヘッダーを2番目のRangeリクエストに追加して、リクエストの参照ページを識別します。 後続のRangeリクエストがホットリンク保護によってブロックされないようにするには、ドメイン名をリファラーホワイトリストに追加します。

シナリオ

リファラーホワイトリストまたはブラックリストは、次のシナリオに適しています。

  • 著作権保護: Webサイトの著作権で保護されたコンテンツを保護するために、リファラーホワイトリストまたはブラックリストを使用して、許可されたWebサイトのみがコンテンツにアクセスできるようにします。

  • ホットリンク保護: リファラーホワイトリストまたはブラックリストを設定して、リソースが他のWebサイトで使用されないようにすることができます。

  • Webサイトのセキュリティ強化: 設定したリファラーホワイトリストに含まれているWebサイトのみ、Webサイトリソースへのアクセスが許可されます。 これにより、機密情報の悪意のあるホットリンクや盗難を防ぎます。

  • トラフィックソース管理: リソースの使用を許可されているドメインを管理できます。 これにより、Webサイトのセキュリティと安定性が保証されます。

さまざまなシナリオでAlibaba Cloud CDN のホットリンク保護機能を使用して、Webサイトの資産を保護し、トラフィックソースを管理し、Webサイトのセキュリティを向上させることができます。

制御ポリシー機能の動作

サーバーは各リクエストのRefererフィールドをチェックし、リクエストのRefererフィールドが信頼できるWebサイトの事前設定されたホワイトリストと一致しない場合、リクエストを拒否します。 これにより、他のWebサイトがWebサイトのリソースに直接リンクするのを防ぎ、帯域幅とサーバーリソースを節約できます。 リファラーホワイトリストまたはブラックリストを設定した後、Alibaba Cloud CDN は、リクエスト内のリファラーヘッダーとリファラールールに基づいてリクエストを許可するかどうかを決定します。

  • リクエストのリファラーヘッダーがリファラーブラックリストに含まれているか、リファラーホワイトリストに含まれていない場合、Alibaba Cloud CDN はリクエストを拒否します。

  • リクエストのリファラーヘッダーがリファラーホワイトリストに含まれている場合、Alibaba Cloud CDN はリクエストを許可します。

image

手順

  1. Alibaba Cloud CDNコンソール

  2. 左側のナビゲーションウィンドウで、ドメイン名 をクリックします。

  3. [ドメイン名] ページで、管理するドメイン名を見つけて、アクション 列の 管理 をクリックします。

  4. ドメイン名の左側のナビゲーションツリーで、リソースアクセス制御 をクリックします。

  5. ホットリンク保護 タブで、変更 をクリックします。

  6. ビジネス要件に基づいて ブラックリスト または ホワイトリスト を選択します。

    パラメーター

    説明

    タイプ

    • ブラックリスト

      ブラックリストに含まれるドメイン名からのリクエストは、リソースにアクセスできません。

    • ホワイトリスト

      ホワイトリストに含まれているドメイン名からのリクエストのみがリソースにアクセスできます。

    説明

    ブラックリストとホワイトリストは互いに排他的です。 一度に設定できるリストのタイプは1つだけです。

    ルール

    • リファラーホワイトリストまたはブラックリストに複数のドメイン名を追加できます。 1行につき1つのドメイン名を入力します。 ドメイン名の前にスペースを追加しないでください。

    • アスタリスク (*) をワイルドカードとして使用できます。 たとえば、* .developer.aliyundoc.comをホワイトリストまたはブラックリストに追加すると、image.developer.aliyundoc.comまたはvideo.developer.aliyundoc.comを照合できます。

    説明

    [ルール] フィールドに入力する内容は、60 KBを超えることはできません。

    リダイレクトURL

    リクエストがブロックされると、HTTPステータスコード302の代わりにHTTPステータスコード403とLocationヘッダーが返されます。 このパラメーターは、Locationヘッダーの値です。 値は、http:// またはhttps:// で始まる必要がありhttp://www.example.com

    詳細設定

    ユーザーがブラウザのアドレスバーからリソース URL に直接アクセスできるようにします。

    デフォルトでは、チェックボックスは選択されていません。 チェックボックスをオンにすると、リファラーホワイトリストとブラックリストのどちらを設定しても、空のリファラーヘッダーを含むリクエストはCDNリソースにアクセスできます。 空のRefererヘッダーは、次のいずれかのシナリオを示唆します。

    • Refererヘッダーはリクエストに含まれていません。

    • Refererヘッダーはリクエストに含まれていますが、値は空です。

    完全一致

    • 完全一致が選択されていない場合:

      • デフォルトでは、チェックボックスは選択されていません。

      • あいまい一致はサポートされていません。

      • 接尾辞の一致がサポートされています。 ドメイン名の左側にピリオド (.) を追加しないでください。構成が配信されると、システムは自動的にドメイン名の左側にピリオド (.) を追加します。

        • ホワイトリストまたはブラックリストにexample.comを追加すると、example.com<anyCharacte r>.example.comが一致します。

        • ホワイトリストまたはブラックリストにa*b.example.comを追加すると、<anyCharacte r>b.example.com<anyCharacter>.a<anyCharacte r>b.example.comが一致します。

    • 完全一致が選択されている場合:

      • 完全一致はサポートされていますが、サブドメインは一致できません。

        • ホワイトリストまたはブラックリストにexample.comを追加すると、example.comのみが一致します。

        • ホワイトリストまたはブラックリストにa*b.example.comを追加すると、一致するのは <anyCharacte r>b.example.comのみです。

      • 接尾辞の一致はサポートされていません。

    スキームを無視

    リファラーブラックリストまたはホワイトリストが設定されているかどうかに関係なく:

    • [スキームを無視] を選択せず、リファラーヘッダーの値がHTTPまたはHTTPSで始まらない場合、リファラーは無効と見なされます。 たとえば、www.example.comリファラーは無効です。 https:// www.*.com形式またはhttp:// www.*.com形式のリファラーのみが有効です。

    • [スキームを無視] を選択した場合、リクエストに含まれるリファラーヘッダーにHTTPまたはHTTPSヘッダーがない場合、リファラーは有効と見なされます。 たとえば、www.example.comリファラーは有効です。

    ルール条件

    ルール条件は、構成が要求に適用されるかどうかを決定するために要求内のパラメータを識別できる。

    • 条件を使用しない

    • ルールエンジンで設定されたルール条件を選択します。 詳細については、「ルールエンジン」をご参照ください。

  7. OK をクリックします。

マッチングロジック

次の表に、Refererヘッダーの一致ロジックを示します。 リクエストのリファラーヘッダーがホワイトリストと一致しないか、ブラックリストと一致する場合、Alibaba Cloud CDN はリクエストを拒否し、HTTPステータスコード403を返します。

設定済みドメイン名

リクエストのリファラーヘッダー値

一致?

説明

  • www.example.com

  • *.example.com

http://www.example.com/img.jpg

リファラーヘッダーのドメイン名は、リファラーホワイトリストまたはブラックリストで設定されているドメイン名と一致します。

http://www.example.com:80/img.jpg

www.example.com

説明列を参照してください。

  • [スキームを無視] が選択されていない場合、HTTPまたはHTTPSヘッダーがリファラーに含まれていないため、ドメイン名は一致しません。

  • [スキームを無視] を選択した場合、ドメイン名が一致します。

http://aaa.example.com

完全一致を選択したかどうかに関係なく、ドメイン名が一致します。

http://aaa.bbb.example.com

説明列を参照してください。

  • 完全一致が選択されていない場合、ドメイン名が一致します。 これは、* .example.comがホワイトリストまたはブラックリストで設定されているためです。 この場合、Refererヘッダーのサブドメインはワイルドカードドメイン名でカバーされます。

  • 完全一致が選択されている場合、* .example.comがホワイトリストまたはブラックリストで設定されているため、ドメイン名は一致しません。 ワイルドカードが宣言されたレベルのドメイン名のみが一致します。

http://example.com

任意

リファラーヘッダーのドメイン名が、リファラーホワイトリストまたはブラックリストのワイルドカードドメイン名と一致しません。 これは、ワイルドカードドメインがサブドメインと一致するが、ルートドメインをカバーしないためです。

http://www.example.net

一致するルールなし

リファラーヘッダーのドメイン名は、ブラックリストまたはホワイトリストに含まれていません。 したがって、リクエストはデフォルトのルールに従って許可されます。

FAQ

リクエストのRefererヘッダーにHTTPまたはHTTPS文字列が時々ないのはなぜですか?

ほとんどの場合、HTTPまたはHTTPS文字列はリクエストのRefererヘッダーに含まれます。

ただし、場合によっては、たとえば、ブラウザがHTTPSを使用しないWebサイトからHTTPSを使用するWebサイトにリクエストをナビゲートする場合、ブラウザは機密ユーザーデータを保護するためにRefererヘッダーにドメイン名のみを表示することがあります。

さらに、一部のブラウザまたはプロキシサーバーは、プライベートブラウジングモードでのアクセスや匿名プロキシの使用など、特定のシナリオでは、Refererヘッダーからプロトコル文字列を自動的に除外する場合があります。

したがって、実際には、ホットリンク保護を設定するときにHTTPまたはHTTPSがリファラーヘッダーに含まれないシナリオに注意してください。 RefererヘッダーにHTTPまたはHTTPSが含まれていないリクエストを許可する場合は、[スキームを無視] を選択します。

リクエストでRefererヘッダーが空になるのはなぜですか? 問題を解決するにはどうすればよいですか?

ほとんどの場合、リクエスト内のRefererヘッダーには、httphttpsなどのプロトコル、ホスト名、場合によってはパスとクエリ文字列を含む完全なURIが含まれます。 リクエストのRefererヘッダーは、次の理由により空になることがあります。

  • 直接アクセス: ユーザーがブラウザーのアドレスバーにURLを入力したり、ブックマークを使用したり、新しい空白のブラウザータブを開いたりすると、参照ページが存在しないため、Refererヘッダーは空になります。

  • ユーザープライバシー設定: ユーザーはプライベートブラウジングモードを設定するか、プライバシー重視の拡張機能を使用して、プライバシーの懸念からリファラーヘッダーを削除します。

  • セキュリティプロトコル: リクエストがHTTPSページからHTTPページにリダイレクトされた場合、ブラウザは機密情報の漏洩を防ぐためにRefererヘッダーを表示しません。

  • クライアントポリシー: セキュリティ上、一部のWebサイトまたはアプリケーションでは、<meta> タグまたはReferrer-policyなどのHTTPヘッダーを指定して、ブラウザによるRefererヘッダーの送信を制限できます。

  • クロスオリジンリクエスト: ブラウザのセキュリティポリシーに基づいて、特定のクロスオリジンリクエストにリファラーヘッダーが含まれていない場合があります。

対処方法は、シナリオやセキュリティ要件によって異なります。

  • デフォルトポリシー: サービスがRefererヘッダーに依存していない場合、空のRefererヘッダーを持つリクエストを許可できます。

  • アクセスを許可: 特定のURLまたはソースについては、ユーザーがブラウザのアドレスバーからリソース URL に直接アクセスできるようにします。 を選択して、これらのURLまたはソースからのリクエストのみを許可できます。 これにより、Alibaba Cloud CDN ポイントオブプレゼンス (POP) により、リファラーヘッダーが空であるかどうかに関係なく、ユーザーはリソースにアクセスできます。