画像ホットリンク(画像リンク無断参照)を防止

画像ホットリンクとは?

画像ホットリンク(Image hotlinking)と聞いたことがありますか? 私たちの言葉で「画像リンク無断盗用」程度で表現できるようです。 「画像ホットリンク」とは、サイト運営者の許可なく画像リンクをそのまま取り込んで使用することを意味する。 この場合、画像を盗むだけでなく、その画像が読み込まれるたびに元のサイトのトラフィックにつながるという点では非常に望ましくありません。

第 WordPress ブログの記事は、ソースのみ引用するファーこと防ぐことはないが、たまに文を丸ごとコピーして参照して記載せずに、そのまま使用する場合も目撃します。 さらに画像リンクまでそのままコピーして行きますね。 (もしかしたら 구글 AdSense コードまでコピーしていくのでは分かりません。)

画像リンク不正コピー防止 - .htaccessを使用する

このような場合、.htaccessを介して画像が外部サイトから読み込まれないように設定することができます。 基本的なコードは次のとおりです。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain2.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://hpmouse.googlepages.com/hotlink.gif [NC,R,L]
// Source: hongkiat.com

上記の2行目の のRewriteCond%{HTTP_REFERER}!^ $はBlank Referrerを可能にするためのコードです。

ライン3とライン4は、画像を許可するサイトを、このような形式で指定します。 自分のサイトだけでなく、Googleのような検索エンジサイトも入れてくれればと思われる。 ヤフー、グーグルなどの検索エンジンを許可しようとする場合は、次のようなコードを追加すると、されています。

RewriteCond %{HTTP_REFERER}  !search\?q=cache               [NC]
RewriteCond %{HTTP_REFERER}  !google\.                      [NC]
RewriteCond %{HTTP_REFERER}  !yahoo\.                       [NC]
// Source: perishablepress.com

最後の行は、ブロックファイル形式とブロックされる場合に表示するブロック案内画像を設定します。 http://hpmouse.googlepages.com/hotlink.gifを画像がブロックされたときに表示される画像のパスに置き換えてください。

画像リンク無断参照を禁止 - 画像ホットリンク禁止

上記のようなコードを作成することの負担になるならば 自動的にhtaccessのコードを生成してくれるサイトを利用することができます。

主なSNS許可ホットリンク保護コード

主な検索エンジン課 Facebook, Twitter(x.com), Instagram, スレッド, Naver 関連サービスをすべて許可したい場合は、次のコードでテストしてみてください。

RewriteEngine On

#	이미지 파일만 적용(원치 않으면 제거 가능)
RewriteCond	%{REQUEST_FILENAME}	-f

#	리퍼러가 비어 있으면 허용(공유 미리보기/프라이버시 브라우저 호환)
RewriteCond	%{HTTP_REFERER}	!^$

#	자기 도메인(여러 개 가능)
RewriteCond	%{HTTP_REFERER}	!^https?://(www\.)?yourdomain\.com/	[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://(www\.)?yourdomain2\.com/	[NC]

#	Meta(Facebook/Instagram/Threads)
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?facebook\.com/	[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?fb\.com/			[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?fbcdn\.net/		[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?instagram\.com/	[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?cdninstagram\.com/	[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?threads\.net/		[NC]

#	Twitter/X
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?x\.com/			[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?twitter\.com/		[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?t\.co/			[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?twimg\.com/		[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?pbs\.twimg\.com/	[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?abs\.twimg\.com/	[NC]

#	NAVER 계열
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?naver\.com/		[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?blog\.naver\.com/	[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?post\.naver\.com/	[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?cafe\.naver\.com/	[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?kin\.naver\.com/	[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?search\.naver\.com/	[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?news\.naver\.com/	[NC]

#	검색엔진 허용(주요 글로벌/국내)
#	Google(모든 ccTLD), 이미지/캐시/AMP 뷰어 계열 포함
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?google\.[a-z.]+/		[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?googleusercontent\.com/	[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?gstatic\.com/			[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?googleweblight\.com/		[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?cdn\.ampproject\.org/		[NC]

#	Bing/MSN
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?bing\.com/			[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?msn\.com/			[NC]

#	Yahoo
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?yahoo\.com/			[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?yimg\.com/			[NC]

#	DuckDuckGo
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?duckduckgo\.com/		[NC]

#	Daum/Kakao(국내 이미지/프록시 CDN 포함)
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?daum\.net/			[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?search\.daum\.net/		[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?daumcdn\.net/			[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?kakaocdn\.net/			[NC]

#	Baidu / Yandex(해외 유입 고려 시)
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?baidu\.com/			[NC]
RewriteCond	%{HTTP_REFERER}	!^https?://([a-z0-9-]+\.)?yandex\.[a-z.]+/		[NC]

#	이미지 확장자 대상
RewriteRule	\.(jpe?g|png|gif|webp|avif|svg)$	https://example.com/hotlink.gif	[NC,R,L]

バイドゥ、ヤンデックス(ロシア検索エンジン)は重要ではないので、バイドゥ、ヤンデックス部分のコードは削除するのも良いです。

cPanelで画像不正参照禁止を設定する

海外のウェブホスティングサービスである Bluehost、ケミクラウド、ファーストコメットなどでは、cPanelで簡単に画像ホットリンクを保護するように設定する機能があります。効果は同じです。

cPanelにログインした後、 セキュリティ » Hotlink Protection ツールで画像不正参照禁止設定を行うことができます。

.htaccess ファイルの変更が容易でない場合は、直感的なUIで簡単に画像不正参照リンクを禁止するように設定が可能です。

a2ホスティングでも同様の機能を提供します。コストパフォーマンスの良い海外ホスティングを考えると、ケミクラウド、ファーストコメットなどのサービスを検討できます。特に ケミクラウドは、ソウルサーバーを導入することで、韓国で高速を提供しています。

スピードが重要な場合や、複数のサイトを運営する場合、またはサイト規模が大きい場合は、クラウドウェイズはまともなオプションかもしれません。

画像不正参照防止設定時の長所と短所

利点

  • サーバー帯域幅(トラフィック)の節約とリソース保護:外部サイトから自分のサーバーイメージを直接呼び出すときに発生する不要なトラフィックやリソース(リソース)の消費をブロックできます。
  • ホスティングコストの削減:画像不正参照で発生する追加のトラフィックコストとサーバーの負荷を減らすことができ、ホスティング料金の上昇を防ぎます。
  • コンテンツ盗難防止:許可なしに私の許可なく画像を外部から表示するのを防ぎ、デジタル資産を保護します。
  • ウェブサイトのパフォーマンスの向上:サイトの負荷を軽減し、サイトのメイン訪問者に迅速なロードと安定したサービスを提供します。

欠点

  • 検索エンジンインデックス(SEO)に影響する可能性:検索エンジンとクローラの画像要求までブロックすると、画像インデックスに問題が生じ、SEO上の不利益が発生することがあります(例外処理が必要)。
  • 通常の外部協力サイトやパートナーへの画像アクセスの制限:共同運営、アフィリエイト、プレスリリースなど、通常の活用を望む外部サイトで画像が正常に見えない場合があります。
  • 設定ミス時の一部のサービスエラー:設定が間違っていると、自分のサイトの内部イメージリンクやCDN、キャッシュ接続にも干渉が発生する可能性があります。
  • ユーザーの不便:画像リンクが詰まって外部サイトで正常に表示されない場合、予期しないUXの低下が発生する可能性があります。

ホットリンク防止はサーバーリソース保護と無分別な盗難防止には有効ですが、検索エンジンなど正常なアクセス経路の例外処理が必ず必要です。

(参考までに Naverは Naver ブログなどにアップロードされた画像を外部サービスから参照できないように禁止しています。これに反して、ティーストーリーでは、ティーストーリーブログにアップロードしたイメージを外部サービスから参照することを許可しています。しかし、カカオで画像参照を禁止するようにポリシーを変更した場合 寀ーに画像をアップロードして画像URLを使用して画像を表示するサイトでは、画像はエクイック表示されます。)

最後に、

他人の文章を引用するときには(出典が不明ないし)出所を明らかにしてくれるのが礼儀ではないでしょうか? また、他人の画像リンクまでそのままコピーして使用して、トラフィックの負担までする行為は避けるべきことと思われる。

現在、このサイトは、海外のウェブホスティングサービスを利用して、トラフィックがどの程度余裕心が強いので、すぐには、画像のリンク無断参照を防ぐつもりはないが、今後のトラフィックが過剰になる場合、この方法も検討するようです。 そして文章を無断で埋め込む問題を回避するために書かれたコピー禁止コードを入れたが、実際に星の効果はないようで、むしろユーザーの不便を加重させる副作用があるようです。 ある程度の時間が経過した後、コピー防止コードは、オフにすることも考慮してみる予定です。 (更新:コピー防止コードは削除しました。)

以上で、画像のリンクを無断でコピーして、サイトのトラフィックに負担を与える行為を防止するための方法を説明しました。

メモ:

14のコメント

コメントを残す

    • このブログに一時的にこの方法を適用したが、今は利用していない。

      トラフィックが負担になるならば、この措置をとることを考慮してみるつもりです。

      返信
    • こんにちは?

      ブログを訪問していただきありがとうございます。

      ここで扱う内容は、ウェブホスティングサーバーにアップロード画像をリンクめコピーして他のサイトに上げたときの画像が表示されないようにすることです。 画像リンクまでそのままコピーする場合には、訪問者がその画像のリンクが挿入されたページ/文を訪問すると、Webホスティングサーバーから画像を読み込みのためにホスティング資源が消費されることになります。 このような現象を防止するための措置です。

      画像をコピーできないようにするさまざまな方法をGoogleで検索することができます。 しかし、ブラウザに表示される画像は、何らかの形で保存が可能です。

      画像盗用問題があれば写真にウォーターマークを表示することがよさそうです。 そして Naver ブログの場合は、写真を無断盗用したブログをお届けすることができる機能があることを知っています。

      返信
      • 親切に答えていただきありがとうございます。
        写真はウォーターマークもしており、検出した場合申告もしていますが、
        画像という特徴上文がなく、写真だけ持って行った場合に、検索することが、あまりにも力が入ってもしか防止することができる方法やかしてお聞き見ありがとうございます

  1. ワードクラッカー様常に文よく見ています。
    第FTPで.htaccessを見つけることができないのにあなたは理由を知っています。?〓〓
    私新規作成をする必要がありでしょうか?

    返信
    • こんにちは?

      正確な状況を知らなくて、正確な回答をドリルすることができませんが、次の状況を確認してください。

      1) WordPress ダッシュボードで設定>固有アドレスに移動し、「保存」をタップしてください。

      それでも.htaccessファイルがない場合は、固有アドレス設定を変更した後に「保存」をクリックしてください。

      2)FTPでhiddenファイルが表示されないことがあります。

      Filezillaの場合は、サーバー>隠しファイルを強制表示をチェックしてみてください。

      、htacessは、Apache Webサーバーを実行しているWebサーバーで使用される構成ファイルです(.htaccess is a configuration file for use on web servers running the Apache Web Server software)。

      https://builtwith.com/ でWeb Serverセクションで確認してください。

      (注: https://www.reddit.com/r/Wordpress/comments/6560dm/cant_find_htaccess_file/ )

      返信
      • ありがとうございます。 ワード様のおかげで解決しました。
        第FTPで.htaccessが見えなかった理由は...接続する際に、ポート番号を指定しなくてだったね。〓〓ので全くないことを知ってランダムに1つ作成して入れたらサイトが詰まっになる風に。
        ワード様のポストのいずれかが.htaac​​ess_oldのような名前を変えて、固有のアドレスを再度適用して見よホウ応じてみるうまく解決されました。
        いつもありがとう^^

      • 早い時間から回答いただき、とても感謝して!

        ワード様も今日一日良いことだけいっぱいになってください^^