画像の盗難を防ぐために 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 はグラフィック検証コードログインを実装します

推薦する

Windows Server 2019 で NAS を構成する方法

序文このチュートリアルでは最新バージョンをインストールします。 NAS は非常に安定して動作するので...

MySQL マスタースレーブレプリケーションと読み取り書き込み分離の詳細な説明

目次序文1. 概要2. 読み取りと書き込みの分離3. MySQL マスタースレーブレプリケーションの...

Windows で mysql 8.0.12 をインストールするための詳細なチュートリアル

この記事では、MySQL 8.0.12のインストール方法に関する詳細なチュートリアルを参考までに紹介...

vue-cli 設定では Vuex の完全なプロセスレコードを使用します

目次序文インストールと使用方法モジュラー管理Vuex の状態永続性要約する序文Vue 開発では、ユー...

JavaScript 初心者のための二分探索木アルゴリズムのチュートリアル

目次バイナリ検索木 (BST) とは何ですか?バイナリツリーの基本的な走査(インオーダー、ポストオー...

Docker 経由で CentOS コンテナを作成する手順

目次序文コンテナ間の通信を容易にするためのブリッジネットワークを作成するCentOS7イメージを使用...

CSS 前景と背景の自動カラーマッチング技術の紹介 (デモ)

1. カラーマッチング効果のプレビュー下の GIF に示すように、ボタンの背景色が徐々に薄くなると...

Linux での MySQL のアンインストールとインストールのグラフィック チュートリアル

ブログを書くのは初めてです。開発に携わって2年になります。仕事の後に何か有意義なことを見つけたいと思...

ウェブサイトにダークモード切り替え機能を持たせるための純粋なCSSフリー実装コード

序文ダーク モードの概念は、 MacOS系統のMojaveに由来し、ユーザーが選択できる 2 つのス...

React Native環境のインストールプロセス

react-native インストールプロセス1.npx react-native init Awe...

win2008 で mysql8.0.11 を mysql8.0.17 にアップグレードする詳細な手順

アップグレードの背景: MySQLの下位バージョンの脆弱性を解決するために、MySQLはMySQL ...

MySQL mysqldump の使い方の詳しい説明

1. mysqldump の紹介mysqldump は、MySQL に付属する論理バックアップ ツー...

Linux netfilter/iptables の知識ポイントの詳細な説明

ネットフィルターNetfilter は、パケット フィルタリング、転送、およびアドレス変換 NAT ...

Linux で大きなファイルの指定された内容を見つける方法

大きなことも小さなことも考えて、方向転換しましょう。 Linux では非常に大きなファイルに遭遇する...

Windows サービス 2016 Datacenter\Stand\Embedded アクティベーション方法 (2021)

管理者権限でcmdを実行する slmgr /ipk CB7KF-BWN84-R7R2Y-793K2-...