2007年04月08日 16:30 [Edit]

Apache - ホットリンクを禁止する

apache logo

それでもホットリンク禁止にしたい人向け。

404 Blog Not Found:To hot-link or not to hot-link, that is NOT the question
ちなみにWebサーバーの設定でホットリンクを謝絶するというのは、明示の形体の一つである。

以下のページからは、ちゃんと画像が見える。

しかし、画像をホットリンクすると、この通り。

やり方

httpd.confないし.htaccessで以下のように設定するだけ。

Document Root:
SetEnvIfNoCase Referer "^http://www\.dan\.co\.jp/\~dankogai/nohotlinks/" referer_ok
<FilesMatch ".(gif|png|jpe?g|mov|wmv|avi|flv)$">
  Order Allow,Deny
  Allow from env=referer_ok
</FilesMatch>

詳しくは以下を参照されたし

限界

この方法で、ふつうにWebブラウザー経由で見ている人をホットリンクから排除することはできる。が、道具の使い方を知っている人なら、Refererを捏造するのは簡単だ。この方法はカカシ程度にしか効かない。カラスのように賢い鳥まで排除したければ、認証を使うなどもっと厳しい手段が必要になる。

なんだかんだ言って、ホットリンクを認めてしまうに超したことはない。

Dan the Pro-Hotlinks


この記事へのトラックバックURL

この記事へのコメント
ちょっと手間はかかりますが、参照元を偽造されても正しく拒否する方法があります。

1)画像は直接配信せず、CGIによって配信するようにする
  http://www.a.com/image.cgi?file=test.jpg
  ※画像ファイルは公開ディレクトリ外に配置
2)画像のURLを埋め込む親ページで、アクセス元IPアドレスと時間で
  乱数を生成して、Cookieとしてクライアントに送付する
3)画像CGIではCookie情報を検証し、失敗した場合は画像配信を拒否する

これなら、画像のURLをコピペされても、親ページに接触していないブラウザでは画像が表示されなくなります。Cookieが利用できないユーザの場合は全く表示されなくなるデメリットはありますが・・・。


Posted by weasel at 2007年04月09日 18:57
いやまあ方法はあるんでしょうが・・・なんかむなしいですよ。
Danさんにしても、weaselさんにしても。

原則論をしましょうよ。些末な実装論ではなく。
Danさんの元記事は実装論としては、とりたてて「啓蒙」するようなTipsでも無ければHackでもないんだから。weaselさんのにしても・・・。

もし実装系の記事ならもっと気張って行きましょうよ。ここのPerl関連記事くらいにはすっげーやつを。
Posted by pon at 2007年04月10日 00:20