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

Object Storage Service:ホットリンク保護

最終更新日:Jun 03, 2026

他のウェブサイトからのホットリンクによって Object Storage Service (OSS) のトラフィックコストが増加する場合、Referer ホワイトリストまたはブラックリストを設定してアクセスを制限します。

仕組み

ブラウザが OSS ファイルをリクエストすると、HTTP Referer ヘッダーがリクエスト元のページを示します。OSS はこの Referer の値を検証して、リクエストの送信元を確認します。

ホットリンク保護の設定後、OSS は次の順序でリクエストを評価します。

  1. 空の Referer のチェック:OSS は Referer が空かどうかを確認します。空の場合、次のロジックが適用されます。

    • 空の Referer を許可する設定の場合、リクエストは許可されます。

    • 空の Referer を許可せず、ホワイトリストが空の場合、リクエストは許可されます。

    • 空の Referer を許可せず、ホワイトリストが空でない場合、リクエストは拒否されます。

    Referer が空でない場合、次のステップに進みます。

  2. ブラックリストのチェック:OSS は Referer がブラックリストのいずれかのエントリに一致するかを確認します。一致する場合は即座に拒否され、ホワイトリストは確認されません。一致しない場合は処理を続行します。

  3. ホワイトリストのチェック:OSS は Referer がホワイトリストのいずれかのエントリに一致するかを確認します。一致する場合はリクエストを許可し、一致しない場合は拒否します。

操作手順

  1. バケット リストに移動し、対象のバケットをクリックします。

  2. 左側のナビゲーションペインで、コンテンツセキュリティ > ホットリンク保護を選択します。ホットリンク保護 オプションを有効にし、必要に応じて Referer ルールを設定します:

    • [Referer ホワイトリスト]:リソースへのアクセスを許可するドメインです。1行に1つずつ入力します。

    • [Referer ブラックリスト]:アクセスを拒否するドメインです。1行に1つずつ入力します。ブラックリストはホワイトリストよりも優先されます。

    • [空の Referer を許可]:ブラウザからの直接アクセスなど、Referer ヘッダーを含まないリクエストを許可するかどうかを指定します。

    • [切り捨て QueryString を許可]:照合時に、URL 内の ? の後のクエリストリングを無視するかどうか。クエリストリングの解析ルール

    Referer ルールはワイルドカードをサポートしています。

    ワイルドカード

    説明

    *

    0文字以上の任意の文字に一致します。

    *.example.comhttp://www.example.com および https://help.example.com に一致します。

    ?

    任意の1文字に一致します。

    http://www.aliyun?.comhttp://www.aliyunc.com に一致します。

    リファラールールは、http://www.example.com:808010.10.10.10:8080 のように、ポートを含むドメインや IP アドレスにも対応しています。

    説明

    マッチングはプロトコルに依存します。http://www.aliyun.com のルールは https://www.aliyun.com には一致しません。HTTP と HTTPS の両方のエントリを追加してください。

  3. 設定を適用するには、設定 をクリックします。

ユースケース

信頼できるウェブサイトのみからのアクセス許可

指定したウェブサイトのみに OSS リソースへのアクセスを許可し、ブラウザからの直接アクセスも許可します。

ステップ 1:Referer の取得

ルールを設定する前に、OSS リソースへのリクエストの Referer を特定します。

  • OSS リアルタイムログの使用[バケット] リストに移動します。 ターゲットバケットのページで、ログ > リアルタイムクエリ を選択して referer フィールドを探します。 ハイフン (-) は、Referer が空のリクエストを示します。

  • ブラウザー開発者ツールの使用: F12 キーを押してブラウザー開発者ツールを開きます。[ネットワーク] パネルで、リクエストの Referer ヘッダーを確認します。

ステップ 2:Referer ルールの設定

パラメーター

説明

[Referer ホワイトリスト]

https://www.aliyun.com
http://www.aliyun.com
*.console.aliyun.com






















HTTP と HTTPS の両方について、信頼できるドメインを追加します。管理機能を維持するため、コンソールドメインも含めてください。

[Referer ブラックリスト]

空のままにする

ブロックする送信元はありません。

[空の Referer を許可]

許可する

ブラウザからの直接アクセスと、Referer を省略するクライアントからのアクセスを許可します。

[切り捨て QueryString を許可]

許可する

柔軟なマッチングのため、URL クエリ文字列を無視します。

ステップ 3:設定の検証

# ホワイトリストに登録された Referer からのリクエストをシミュレート (成功が期待される)
curl -e "http://www.aliyun.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

# ホワイトリストに登録されていない Referer からのリクエストをシミュレート (AccessDenied が返されることが期待される)
curl -e "http://www.example.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

# Referer が空のリクエストをシミュレート (成功が期待される)
curl http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

悪意のあるウェブサイトのブロック

ほとんどの送信元からのアクセスを許可しながら、ブラックリストを使用して特定の悪意のあるウェブサイトをブロックします。

ステップ 1:Referer の特定

[バケット] リストに移動します。対象のバケットのページで、ログ > リアルタイムクエリ を選択します。異常なトラフィックレコードをフィルター処理し、referer フィールドを確認して、不正なドメインを特定します。

ステップ 2:Referer ルールの設定

パラメーター

説明

[Referer ホワイトリスト]

*

すべての送信元からのアクセスを許可します。

[Referer ブラックリスト]

*bad-site.example
http://malicious-site.example
https://malicious-site.example






















悪意のあるドメインを追加します。ワイルドカードを使用して、ドメイン全体とそのサブドメインをブロックします。

[空の Referer を許可]

許可する

直接アクセスと正当なクライアントの動作を許可します。

[切り捨て QueryString を許可]

許可する

柔軟なマッチングのため、URL クエリ文字列を無視します。

ステップ 3:設定の検証

# 通常のウェブサイトからのリクエストをシミュレート (成功が期待される)
curl -e "http://www.example.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

# ブラックリストに登録されたウェブサイトからのリクエストをシミュレート (AccessDenied が返されることが期待される)
curl -e "http://bad-site.example" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

# Referer が空のリクエストをシミュレート (成功が期待される)
curl http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

WeChat ミニプログラムアクセスの許可

WeChat ミニプログラムは、https://servicewechat.com/{appid}/{version}/page-frame.html という固定の Referer 形式を使用します。この形式に一致するようにルールを構成してください。

ステップ 1:Referer 形式の特定

WeChat ミニプログラムの Referer 形式は固定で予測可能であるため、ワイルドカードを使用して直接設定できます。 正確な形式を確認するには、[バケット] リストに移動し、対象バケットの ログ > リアルタイムクエリ セクションで referer フィールドを確認します。

ステップ 2:Referer ルールの設定

パラメーター

説明

[Referer ホワイトリスト]

*servicewechat.com
*.console.aliyun.com







ワイルドカードですべてのミニプログラムの AppID とバージョンをカバーします。管理機能を維持するため、コンソールドメインも含めてください。

[Referer ブラックリスト]

空のままにする

ブロックする送信元はありません。

[空の Referer を許可]

許可する

一部のミニプログラムは Referer を省略します。空の Referer を許可することで互換性を確保します。

[切り捨て QueryString を許可]

許可する

柔軟なマッチングのため、URL クエリ文字列を無視します。

ステップ 3:設定の検証

# WeChat ミニプログラムからのリクエストをシミュレート (成功が期待される)
curl -e "https://servicewechat.com/wx1234567890abcdef/1/page-frame.html" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

# 他の送信元からのリクエストをシミュレート (AccessDenied が返されることが期待される)
curl -e "http://www.example.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

# Referer が空のリクエストをシミュレート (成功が期待される)
curl http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

OSS コンソールアクセスの許可

ホットリンク保護を有効にした後、管理機能を維持するために OSS コンソールドメインをホワイトリストに追加します。

ステップ 1:ルールの設定

パラメーター

説明

[Referer ホワイトリスト]

*.console.aliyun.com

ワイルドカードですべての OSS コンソールサブドメインをカバーし、リージョン全体でプレビューが機能するようにします。

[Referer ブラックリスト]

空のままにする

ブロックする送信元はありません。

[空の Referer を許可]

許可する

直接アクセスとコンソールプレビューの動作を許可します。

[切り捨て QueryString を許可]

許可する

柔軟なマッチングのため、URL クエリ文字列を無視します。

ステップ 2:設定の検証

# コンソールからのアクセスをシミュレート (成功が期待される)
curl -e "https://oss.console.alibabacloud.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

OSS コンソールからファイルをプレビューおよびダウンロードして検証することもできます。

URL による直接アクセスのブロック

空の Referer を許可しないことで、すべてのリクエストが指定されたウェブサイトから発信されるようにし、URL による直接アクセスを防止します。

重要

これにより、ブックマークやメールリンクを含むすべての直接アクセスがブロックされます。一部のブラウザプラグイン、ダウンロードマネージャー、ビデオプレーヤーは Referer を省略することが多いため、動作しない可能性があります。

ステップ 1:Referer の決定

すべての正当なアクセスシナリオをカバーするため、ウェブサイトのすべてのドメインとプロトコルの組み合わせを特定します。

ステップ 2:ルールの設定

パラメーター

説明

[Referer ホワイトリスト]

https://www.example.com
http://www.example.com
*.console.aliyun.com






















ウェブサイトのドメインです。必要なすべてのドメインとプロトコルの組み合わせを追加してください。管理機能を維持するため、コンソールドメインも含めてください。

[Referer ブラックリスト]

空のままにする

ブロックする送信元はありません。

[空の Referer を許可]

いいえ

ブラウザのアドレスバーからの直接アクセスをブロックします。

[切り捨て QueryString を許可]

許可する

柔軟なマッチングのため、URL クエリ文字列を無視します。

ステップ 3:設定の検証

# ウェブサイトからのリクエストをシミュレート (成功が期待される)
curl -e "http://www.example.com" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

# 直接アクセスをシミュレート (AccessDenied が返されることが期待される)
curl http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

# 他のウェブサイトからのリクエストをシミュレート (AccessDenied が返されることが期待される)
curl -e "http://other.example" http://your-bucket-name.oss-cn-hangzhou.aliyuncs.com/demo.txt

クエリ文字列の解析ルール

[クエリ文字列の切り捨て] オプションを無効にした場合、OSS は次のようにクエリ文字列を解析します。

ルール

説明

クエリ文字列は URL デコードされません。

リクエスト URL が http://www.example.com/?job_id=task$01 の場合、http://www.example.com/?job_id=task%2401 に設定されたホワイトリストまたはブラックリストのルールは一致しません。

パラメーターでは大文字と小文字が区別されません。

リクエスト URL が http://www.example.com/?ACTION=NOP の場合、http://www.example.com/?action=nop に設定されたホワイトリストまたはブラックリストのルールが一致します。

パラメーターの順序は重要です。

リクエスト URL が http://example.com/?b=c&a=b の場合、http://example.com/?a=b&b=c に設定されたホワイトリストまたはブラックリストのルールは一致しません。

本番環境での考慮事項

  • CDN キャッシュバイパスのリスク:ホットリンクリクエストが CDN エッジノードに到達し、キャッシュから提供されることで、OSS ホットリンク保護をバイパスする可能性があります。これを防ぐには、CDN でも 同じ Referer ホットリンク保護ルールを設定してください。

  • ブラウザの Referrer-Policy の影響:ブラウザは Referrer-Policy ヘッダーをサポートしており、これによりクロスオリジンリクエストで送信される Referer 情報の量が制御されます。no-referrer などのポリシーでは、ブラウザが Referer を省略するため、OSS はこれらを Referer が空のリクエストとして扱います。ルールを設定する際にはこの点を考慮してください。

  • ビデオ再生の互換性:ブラウザのネイティブ video タグは、Referer を含む初期リクエストと、空の Referer を含む後続のメディアデータリクエストを送信します。ビデオ再生が機能するようにするには、空の Referer を含むリクエストを許可する必要があります

クォータと制限

  • 匿名アクセスまたは署名付き URL。 AccessKey で署名された API コール (Authorization ヘッダーを含むリクエスト) は、ホットリンク防止ルールによる制限を受けません。

  • リストサイズの制限:Referer ホワイトリストとブラックリストの合計サイズは 20 KB を超えることはできません。

  • 適用範囲:ホットリンク保護はバケットレベルで適用されます。オブジェクトごと、またはディレクトリごとのルールはサポートされていません。

よくある質問

ホットリンク保護が機能しないのはなぜですか?

次の項目を順番に確認してください。

  1. ブラウザ環境の確認:WeChat ミニプログラムや iframe など、特定の環境では Referer が変更される場合があります。OSS リアルタイムログまたはブラウザ開発者ツールを使用して実際の Referer を特定し、ルールを調整してください。

  2. Referer のフォーマット:Referer エントリにプロトコルプレフィックス (http:// または https://) が含まれていることを確認してください。省略すると、ルールは失敗します。

  3. CDN キャッシュバイパス:CDN にホットリンク保護がない場合、リクエストが OSS 検証をバイパスする可能性があります。CDN で一致するホットリンク保護ルールを設定してください。

WeChat ミニプログラムでのアクセス拒否エラーの解決

WeChat ミニプログラムは、https://servicewechat.com/ で始まる固定のリファラーを使用します。ホワイトリストに *servicewechat.com を追加することで、すべてのミニプログラムからのアクセスが許可されます。

直接アクセスでのアクセス拒否エラーの解決

ブラウザからの直接アクセスでは、空のリファラーが送信されます。空のリファラーが許可されていない場合、アクセスは拒否されます。直接アクセスを許可するには、ホットリンク防止設定の空の Referer を許可オプションを許可するに変更します。

InlineDataTooLarge エラーの解決

Referer ホワイトリストとブラックリストの合計サイズが 20 KB の制限を超えています。ワイルドカードを使用してルールを統合するか、不要なエントリを削除してください。