アクセス禁止

f:id:tenman:20090312122231j:image

wikipedia:ネコ



画像などへの直リン(直接リンクを張る事)を禁止する。


直リン禁止というテーマに関心を持っている人が多いのに驚いた。


直リンクを禁止する理由は、いろいろとあると思うけれど、
アクセスさせない強制的な仕組みをホームページに作る方法のひとつが WEBサーバ設定のカスタマイズです。


アクセス禁止の設定は、時として、サーバ内の画像ファイルが表示できなくなったり、自分自身のトラブルの元にもなるので、設定には注意が必要です


以下のケースでは、リファラという環境変数を利用しています。リファラという環境変数自体値を自分で設定したりする事が可能なため、厳密な用途には使用できない。
パソコンにインストールされた、セキュリティプログラムが、リファラなしでホームページにアクセスするケースも多いという点が、よく指摘されます。

どのように使いこなすかという事では、それぞれの環境により異なるので、同じ直リン禁止をテーマにした2エントリを、リンクします。


.htaccessを使った直リン禁止処理は、リファラのないものをどう扱うかという点

禁止しても、そこにある画像が壊れているだけにしか見えないと、壊れた画像を放置しているように思われるかもしれない。

またブログなどが、

<a href="imageURL"><img src="サムネール" …></a>

というコードを生成している場合もあると思う。
すべてこういうhtmlで記述されているわけではありません





私は、コピペが大好きですが、コピペで完璧という方法は、経験的には、意外に少ない。

そのときは、うまく言っている様子なんですが、問題は、しばらくたってから見つかったりする。

コピペ元の情報が誤っていたというものではなく、環境が絡んでいる。


使っているブログプログラムやレンタルサーバ等、環境は、みんな違うので、よりよい選択をしていくのは、難しい



インターネットには、確かな情報が少ないという人もいますが、多くのエントリを比較する中で、自分に合うやり方を見つけ出す事ができる稀有な環境だから、コピペは、2つも3つもやってみる必要がありそうです。




うんざりする作業ですが、




.htaccessの設定についての記事があった。

#Stop Image Hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain2.com [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteCond %{HTTP_REFERER} !msn\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{REQUEST_URI} !^hotlinker\.gif$
RewriteRule \.(jpe?g|png|gif)$ hotlinker.gif [NC,R,L]

ファイアウォールやプロクシなどを介して、ブランクのリファラでのアクセスを阻止します。
必要が無ければ、削除してください。

リファラなしは、リンクを許可したほうがいいというエントリもあります。
http://allabout.co.jp/internet/hpcreate/closeup/CU20070201A/index3.htm

<Files ~ "\.(gif|png|jpg)$">
SetEnvIf Referer "^http://allabout\.co\.jp" ShowOK
SetEnvIf Referer "^$" ShowOK
order deny,allow
deny from all
allow from env=ShowOK
</Files>

2行目:Referer情報がない場合も許可する記述
SetEnvIf Referer "^$" ShowOK

この記述は、「 Referer情報が得られなかった場合 」に合致する記述です。この記述には、次の2つの役割があります。

1. セキュリティソフト利用者への対処
「Norton Internet Security」のようなセキュリティソフトを使っている場合、ブラウザがウェブサーバに対してReferer情報を提供するのを阻止してしまうことがあります。 そうすると、本来はアクセスを許可して良いはずの場面で、アクセスを拒否してしまうことになります。 それを防ぐため、Referer情報がない場合は、無条件で許可するようにします。
2. URLを直接アドレス欄に打ち込んでアクセスした場合への対処
ここでは「リンクを防ぎたい」だけなので、URLを直接入力してアクセスしてきた場合には許可する必要があります。 (URLを直接入力した場合は、「直前にアクセスしたページはない」ので、Referer情報はありません。)

※「^$」と書くと「なし」という意味になるのは、正規表現で「^」は先頭を、「$」は末尾を表すためです。先頭と末尾の間に何も存在しないので、つまり「何もない」という意味になります。

リファラという環境変数も、いまいちな変数
http://blog.livedoor.jp/ld_directors/archives/50856112.html