Referer ブラックリスト / ホワイトリストは、リファラーヘッダーに基づいてアクセスを制御する方法です。この機能を使用すると、リソースを不正アクセスから保護できます。Referer ブラックリスト / ホワイトリストを設定すると、Alibaba Cloud CDN は、リファラーヘッダーに基づいてリクエストを許可または拒否します。
重要 デフォルトでは、この機能は 有効になっていませんAlibaba Cloud CDN で。つまり、すべての Web サイトがリソースにアクセスできます。
Referer ブラックリスト / ホワイトリストは、データ転送の不正使用を防ぐための方法です。
Referer ブラックリスト / ホワイトリストにドメイン名を追加すると、そのドメイン名に一致するワイルドカードドメイン名が自動的にブラックリストまたはホワイトリストに追加されます。 たとえば、aliyundoc.com
をReferer ブラックリスト / ホワイトリストに追加すると、*.aliyundoc.com
に一致するすべてのドメイン名に対して有効になります。
リファラーの構造
リファラーヘッダーは、HTTP リクエストのヘッダーセクションのコンポーネントであり、送信元アドレスに関する情報が含まれており、リクエストの送信元を識別するために使用されます。リファラーヘッダーは、スキーム、ドメイン、パス、およびパラメーターで構成されます。次の図は、リファラーヘッダーの構造を示しています。

シナリオ
Referer ブラックリスト / ホワイトリストは、次のシナリオに適しています。
著作権保護: Web サイト上の著作権で保護されたコンテンツを保護するために、Referer ブラックリスト / ホワイトリストを使用して、承認された Web サイトのみがコンテンツにアクセスできるようにすることができます。
ホットリンク保護: リファラーホワイトリストまたはブラックリストを使用すると、リソースが他の Web サイトで使用されるのを防ぐことができます。
Web サイトのセキュリティ強化: リファラーホワイトリストに含まれているドメイン名のみが Web サイトのリソースにアクセスできます。これにより、悪意のあるホットリンクや機密情報の盗難を防ぎます。
トラフィックソース管理: リソースの使用を許可されているドメインを管理できます。これにより、Web サイトのセキュリティと安定性が確保されます。
さまざまなシナリオでこの機能を使用して、Web サイトの資産を保護し、トラフィックを管理し、Web サイトのセキュリティを向上させることができます。
仕組み
サーバーは各リクエストの Referer フィールドをチェックし、リクエストの Referer フィールドが事前に設定されたホワイトリストと一致しない場合、リクエストを拒否します。これは、帯域幅とサーバーリソースの節約に役立ちます。Alibaba Cloud CDN のリファラールール:

使用方法
Referer ブラックリストまたはホワイトリストを構成した後も、Referer ブラックリストに含まれるクライアントからのリクエストは、Points of Presence(POP)に到達する可能性があります。ただし、POP はリクエストを拒否し、HTTP 403 状態コードを返します。リクエストは Alibaba Cloud CDN ログに記録されます。
ブラックリストに含まれるクライアントからのリクエストを POP がブロックしたときに生成されるデータ転送、およびクライアントが HTTPS 経由でリソースをリクエストした場合の HTTPS リクエストに対して課金されます。
データ送信の悪用はインターネットアクセスから発生します。そのため、Referer ブラックリストまたはホワイトリストのルールは、パブリックドメイン名にのみ適用されます。
使用上の注意
Alibaba Cloud CDN コンソールにログオンします。
左側のナビゲーションウィンドウで、ドメイン名 をクリックします。
ドメイン名 ページで、管理するドメイン名を探し、管理アクション 列の をクリックします。
ドメイン名の左側のナビゲーションツリーで、リソースアクセス制御 をクリックします。
Referer ブラックリスト / ホワイトリスト タブで、変更 をクリックします。
ビジネス要件に基づいて、次の表に示すパラメーターを構成します。
OK をクリックします。
Referer ブラックリスト / ホワイトリストのパラメーター
パラメーター | 説明 |
タイプ |
説明 ホワイトリストとブラックリストは相互に排他的です。いずれか一方のリストのみ構成できます。 |
ルール | Referer ブラックリスト / ホワイトリストに複数のドメイン名を追加できます。ドメイン名は改行文字で区切ります。 アスタリスク (*) をワイルドカードとして使用して、すべてのドメイン名と一致させることができます。たとえば、*.example.com は example.com のすべてのサブドメインと一致します。 アスタリスク (*) を省略して、ドメインとそのすべてのサブドメインを一致させることもできます。たとえば、example.com は example.com および *.example.com と一致します。
|
[リダイレクト URL] | リクエストがブロックされると、HTTP ステータスコード 302 と Location ヘッダーが返されます。このパラメーターは、Location ヘッダーの値です。値は http:// または https:// で始まる必要があります(例: http://www.example.com )。 |
[詳細設定] | ユーザーがブラウザのアドレスバーからリソース URL に直接アクセスできるようにします。 | デフォルトでは、チェックボックスは選択されていません。チェックボックスをオンにすると、Referer ブラックリスト / ホワイトリストを構成しているかどうかに関係なく、空の Referer ヘッダーを含むリクエストが CDN リソースへのアクセスを許可されます。 空の Referer ヘッダーは、次のいずれかのシナリオを示している可能性があります。 |
[完全一致] | デフォルトでは、チェックボックスは選択されていません。このチェックボックスをオンにすると、一致のためにアスタリスク (*) を省略することはできません。アスタリスク (*) が使用されていない場合、example.com は example.com のみに一致します。 |
[スキームを無視] | |
ルール条件 | ルール条件は、リクエスト内のパラメーターを識別して、構成がリクエストに適用されるかどうかを判断できます。 |
Referer ヘッダーを確認する
curl コマンドを使用して、Referer ヘッダーを確認します。-e
の後に Referer ヘッダーの値が続き、-I
の後に高速化ドメイン名が続きます。ヘッダー情報が返されます。この例では、ホワイトリストが使用されています。
シナリオ 1:Referer ブラックリストまたはホワイトリストの [ルール] のみを構成する
説明 このシナリオでは、aliyun.com
というルールのみが構成されています。リダイレクト URL、詳細設定、およびルール条件パラメーターは構成されていません。
Referer ヘッダーに http(s)://aliyun.com
またはそのサブドメインが含まれるリクエストは一致と見なされます。ホワイトリストにない Referer ヘッダーを持つリクエストは拒否されます。
Referer ヘッダーにルートドメインが含まれるリクエストを検証するには、次のコマンドを実行します。curl -e http://aliyun.com -I DomainName

Referer ヘッダーにサブドメインが含まれるリクエストを検証するには、次のコマンドを実行します。curl -e http://sub.aliyun.com -I DomainName

Referer ヘッダーに別のドメインが含まれるリクエストを検証するには、次のコマンドを実行します。curl -e http://aIiyun.com -I DomainName

Referer ヘッダーが空のリクエストを検証するには、次のコマンドを実行します。curl -e " " -I DomainName

構成済みのドメインのみを含む Referer ヘッダーを検証するには、次のコマンドを実行します。curl -e aliyun.com -I DomainName

シナリオ 2: [ルール] で Referer ブラックリストまたはホワイトリストを構成し、[ブラウザからのリソース URL アクセスを許可] を選択する
説明 このシナリオでは、ルール aliyun.com
が構成され、[ブラウザからのリソース URL アクセスを許可] が選択されています。[詳細設定] の他のオプションは選択されていません。[リダイレクト URL] パラメーターと [ルール条件] パラメーターは構成されていません。
シナリオ 1 と比較すると、Referer ヘッダーが空のリクエストが一致しています。このようにして、Referer ヘッダーが空のリクエストと直接アクセス リクエストが許可されます。
Referer ヘッダーが空のリクエストを検証するには、次のコマンドを実行します: curl -I DomainName

Referer ヘッダーに " "
が含まれるリクエストを検証するには、次のコマンドを実行します: curl -e " " -I DomainName

シナリオ 3:Referer ブラックリストまたはホワイトリストの ルール を設定し、[スキームを無視] を選択する
説明 このシナリオでは、ルール aliyun.com
が設定され、[スキームを無視] が選択されています。[詳細設定] のその他のオプションは選択されていません。[リダイレクト URL] および [ルール条件] パラメーターは設定されていません。
シナリオ 1 と比較して、Referer ヘッダーにプロトコルが含まれていないリクエスト ( aliyun.com
など) が許可されます。
Referer ヘッダーにプロトコルが含まれていないリクエストを検証するには、次のコマンドを実行します:curl -e aliyun.com -I DomainName

よくある質問
リクエストの Referer ヘッダーに HTTP または HTTPS 文字列が欠落しているのはなぜですか?
ほとんどの場合、リクエストの Referer ヘッダーには HTTP または HTTPS 文字列が含まれています。
ただし、ブラウザが HTTPS を使用していない Web サイトから HTTPS を使用している Web サイトへのリクエストを移動する場合、ブラウザは Referer ヘッダーにドメイン名のみを表示することがあります。これは、Referrer-Policy などのセキュリティポリシーに基づいて機密ユーザーデータを保護するためです。
さらに、一部のブラウザまたはプロキシサーバーは、プライベートブラウジングモードでのアクセスや匿名プロキシの使用など、特定のシナリオで Referer 文字列を自動的に除外することがあります。
したがって、実際に機能を構成する際は、Referer ヘッダーに HTTP または HTTPS が含まれていないシナリオに注意してください。 Referer ヘッダーに HTTP または HTTPS が含まれていないリクエストを許可する場合は、[スキームを無視] を選択します。
リクエストの Referer ヘッダーが空なのはなぜですか? この問題を解決するにはどうすればよいですか?
ほとんどの場合、リクエストの Referer ヘッダーには、http
や https
などのプロトコル、ホスト名、場合によってはパスとクエリ文字列を含む完全な URI が含まれています。リクエストの Referer ヘッダーが空になる理由は次のとおりです。
直接アクセス: ユーザーがブラウザのアドレスバーに URL を入力した場合、ブックマークを使用した場合、または新しい空白のブラウザタブを開いた場合、参照ページが存在しないため、Referer ヘッダーは空になります。
ユーザー プライバシー設定: ユーザーは、プライバシーに関する懸念から、プライベートブラウジングモードを構成するか、プライバシー重視の拡張機能を使用して Referer ヘッダーを削除します。
セキュリティ プロトコル: リクエストが HTTPS ページから HTTP ページにリダイレクトされた場合、ブラウザは機密情報の漏洩を防ぐために Referer ヘッダーを表示しません。
クライアント ポリシー: セキュリティ上の理由から、一部の Web サイトまたはアプリケーションは、<meta>
タグまたは Referrer-Policy
などの HTTP ヘッダーを指定することにより、ブラウザが Referer ヘッダーを送信することを制限する場合があります。
クロスオリジン リクエスト: ブラウザのセキュリティポリシーに基づいて、特定のクロスオリジン リクエストに Referer ヘッダーが含まれていない場合があります。
処理方法は、さまざまなシナリオとセキュリティ要件によって異なります。
デフォルト ポリシー: サービスが Referer ヘッダーに依存していない場合は、Referer ヘッダーが空のリクエストを許可できます。
アクセスを許可する: 特定の URL またはソースの場合、ユーザーがブラウザのアドレスバーからリソース URL に直接アクセスできるようにします。 を選択して、これらの URL またはソースからのリクエストのみを許可できます。このようにして、POP は、Referer ヘッダーが空であるかどうかに関係なく、ユーザーがリソースにアクセスできるようにします。