画像の盗難を防ぐために Nginx で Referer を設定する方法

画像の盗難を防ぐために Nginx で Referer を設定する方法

サーバーの画像が他のウェブサイトからホットリンクされると、サーバーの帯域幅とアクセス速度に影響します。このため、画像ファイルまたはビデオファイルに対してアンチホットリンク機能を設定する必要があります。

アンチホットリンク機能とは、簡単に言えば、リソースに直接アクセスすることはできるが、自分のサーバーにリソースリンクを置いて他の人がアクセスできないようにする機能です。特に、画像やビデオなどの大きなファイルは、サーバーの応答が非常に遅くなる可能性があります。

画像ホスティングサービスでなかったら、他のウェブサイトが当サイトの写真を直接使用してしまうのではないかと本当に心配です。こうなると、あっという間にトラフィックを使い果たしてしまう可能性があります。結局、CDN は多額のお金で購入されるのです。 したがって、アンチホットリンクを設定することをお勧めします。Nginx はこの機能を実行できます。

一般的に、HTTP プロトコルに準拠したブラウザが Web サイト A から Web サイト B にアクセスすると、クリック元を示すために現在の Web サイトの URL が含まれます。したがって、Nginx のこのモジュールもこれが実装されることに依存しています。したがって、ハッカーがこのヘッダーを追加しないと、画像の盗難を防ぐことはできません。

Nginx 公式サイトのドキュメントは次のとおりです。

構文: valid_referers none | blocked | server_names | string ...;
デフォルト: -
コンテキスト: サーバー、場所

nginx リファラ ディレクティブの紹介

nginx モジュール ngx_http_referer_module は、通常、不正なドメイン名からのリクエストをブロックするために使用されます。Referer ヘッダーを偽装するのは非常に簡単なので、このモジュールはほとんどの不正なリクエストをブロックするためにのみ使用できることに注意してください。正当なリクエストには referer ソース ヘッダーが含まれないことがあるため、空のソース ヘッダー (referer) を持つリクエストを拒否しないこともあります。

したがって、server または location ブロックにコードを追加できます。これを valid_referers.conf として保存しました。

valid_referers なし、ブロックされた server_names;

($invalid_referer) の場合 {
 403 を返します。
}

次に、必要な場所に include /etc/nginx/valid_referers.conf を追加します。もちろん、これを実行するための前提は、valid_referers.conf が対応するマシンの /etc/nginx/valid_referers.conf パスに配置されていることです。

例:

 場所 /articles/img {
  /etc/nginx/valid_referers.conf を含めます。
  ルート /data/blog/code;
 }

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginxはリファラディレクティブを使用してアンチホットリンク設定を実装します
  • リファラーディレクティブを使用して、画像のホットリンクを防止するためにNginxサーバーを設定します。

<<:  Vueはグラフィック検証コードを実装する

>>:  Vue はグラフィック検証コードログインを実装します

推薦する

SQL 集計、グループ化、並べ替え

目次1. 集計クエリ1. COUNT関数2. SUM関数3. AVG関数4. MAX関数とMIN関数...

Mysql の mysql.user ユーザー テーブルの詳細な説明

MySQL は、異なるユーザーに異なる権限を割り当てることができるマルチユーザー管理データベースであ...

HTML pre タグ内の自動改行

このとき、overflow:auto;(コードがコンテナの境界を超えたときにスクロールボックスを表示...

HTML で JavaScript を使用する

<script> タグHTML5では、スクリプトには次の属性があります: async、d...

Vue2.x プロジェクトのパフォーマンス最適化のためのコード最適化の実装

目次1 v-ifとv-showの使用2. 計算と監視を区別する3 v-for トラバーサルでは、アイ...

Dapr を使用してマイクロサービスをゼロから簡素化する例

目次序文1. Dockerをインストールする2. Dapr CLIをインストールする3. Net6 ...

Docker コンテナで ASP.NET Core を実行する手順

最近は学ぶべき知識が多すぎて、どれを先に学べばいいのかわかりません。このブログはもともとxamari...

Vue Notepadの例の詳細な説明

この記事の例では、メモ帳機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的...

MySQL 8.0.15 winx64 解凍版のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15 winx64解凍版のインストールと設定方法を紹介します。具体...

jQueryは検証コード送信のコントロールボタンを無効にする機能を実装します

必要な効果: 確認コードを送信するためにクリックした後、ボタンは無効になり、5 秒後に無効解除されま...

Linux での crontab スケジュール実行コマンドの詳細な説明

LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | grep ...

HTML+CSS で div タグの右上隅に削除アイコンを追加するサンプルコード

1. 要件の説明Divタグの右上隅に削除アイコンを表示します2. 実装html、CSS 3. 参照コ...

MySQLがウィンドウ関数で合計関数を実行するときに発生する可能性のあるバグ

MySql のウィンドウ関数を使用して統計データを収集する際に、小さな問題が見つかったので、それにつ...

CSS でデジタル ページング効果のコードと手順を実装する方法

かなりの数のウェブサイトがデジタルページング効果を使用しています。たとえば、このサイトのページングも...

MySQLからElasticsearchにデータを同期する方法の詳細な説明

目次1. 同期の原理2. ログスタッシュ入力JDBC 3. go-mysql-elasticsear...