ホットリンクを防ぐ方法
2009年06月25日
ホットリンク、ホットリンキングというのは、他のサイトの画像をそのままソース元したリンクのことです(必ずしも画像とは限りませんが)。
直リンクともいいます。
たとえば、僕がこのブログに「suzuki-logo.jpg」という画像を、
<img src="/images/suzuki-logo.jpg" / >
というタグで表示していたとします。
他のサイトの管理者がこの画像を自分のサイトに掲載するときに、
<img src="http://www.suzukikenichi.com/images/suzuki-logo.jpg" / >
と記述すると自分のサーバーに保存した画像ではなく、僕のサーバーに保存されている画像を直接呼び出すことができます。
勝手に画像を利用されていることも問題なのですが、このサイトに誰かがアクセスするたびに、僕のサーバーにも画像データを表示するための通信が発生します。
サーバーに余計な負荷がかかりますし、ネットワークの帯域もムダに消費されてしまいます。
さほど気にするほどではないかもしれませんが、気持ちのいいものではありません。
ホットリンクは、.htaccessで禁止することができます。
以下のように記述してください。
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://example.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.example.com.*$ [NC]
RewriteRule .(gif|jpg|png)$ - [F]
※example.comは、自分のドメインに置き換えます。
※Apacheの場合です。IISは分かりません。
このように記述しておくと、GIF、JPG、PNGファイルが他サイトから呼び出されたときには、アクセス禁止のステータスコード(403 Forbidden)を返します。
wwwありとwwwなしの統一、index.htmlありとindex.htmlなしの統一とともに、サイトの立ち上げ時に設定しておくといいでしょう。
Sponsored Links
この記事を読んだ人は次のエントリも読んでいます。




知らなかったです。
早速、追加します!
*** Reply from Suzuki Kenichi ***
はい、利用してみてください。
こんにちは。
先生とは、以前、石崎先生の所でご挨拶させていただきましたが、
今回、初コメです。 ちょっとドキドキ!!!
1) さて、例えば、ディレクトリーで、/images-1/ は、サイト内画像。
/images-2/は、サイト外での利用画像と、している場合。
/images-1/のみの画像をドメイン外NGにするには
如何すればよろしいでしょうか?
2) 現在、.htaccessには
私の都合で数ページのリダイレクトが記載されているのですが、
( Redirect permanent /a.html ~~~~~/b/a.html など )
この下に書いてしまえば良いのでしょうか?
大変お手数ですが、お教えいただけますと、幸いです。
*** Reply from Suzuki Kenichi ***
こんにちは、コメントありがとうございます。
意味がよく分からないです。
ホットリンクを許可しているということですか?
だとしたら、調べてみないと分かりませんねぇ。
記事にも書いたように、ホットリンクにはデメリットばかりなので、許可する理由が見当たりません。
記述は、そのまま下に追加してOKです。
「RewriteEngine on」は、すでに書いてあれば、繰り返さなくてよいです。
こんにちは。
ありがとうございます。
サイト外の商品紹介ページなど、
きまった数サイトに直リンを許可している画像があります。
その許可している画像だけ、
現在は、まとめて、1つの箱の中に入れて有ります。
自サイトで使っている画像は別の箱に、まとめて入ってます。
全ての他サイトからの画像へのアクセスを禁止してしまうと
その分も外からアクセスできなくなってしまう為、
この箱へはアクセスOK. この箱はNG。 と言う事が出来るのでしょうか?
どうしたら良いか?と考えています。
判りづらく申し訳ございません。
*** Reply from Suzuki Kenichi ***
できるとは思いますが、僕には分からないです。
お役に立てず、申し訳ないです。
画像を提供して、各自のサーバーに保存してもらうことはできないのですか?
横からですが.htaccessにこう付け加えれば可能ですよ
SetEnvIf Referer “^http://example.com” check
Order deny,allow
Deny from all
Allow from env=check
mod_rewriteは結構重い処理ですから、単純なアクセスコントロールなら
こちらの方が軽くていいです
*** Reply from Suzuki Kenichi ***
これは、icchanさんの要望(ディレクトリごとに分けたい)を満たす記述ということですか?