.htaccess活用法(3).htaccess(拡張子がhtaccessということで、ドットが必要です。ファイル名がないので最初戸惑いますが、こういうものだと思ってください。)が利用可能だと、
3.参照元(Referer)によるアクセス制限が可能例えば、イラストを公開する人たちの中には、直リンクに困っている人もおられるかもしれません。苦労して書いたイラストを他人のサイトで引用され、しかも、帯域(データ転送に必要なサーバへの負荷)も勝手に使われるのが、画像などへの直リンクです。当然、道徳的にも問題なのですが、これらを止めさせる方法は無いでしょうか?もちろん、相手側に抗議するのも有効ですが、無視されるかもしれません。こういう場合、事を荒立てずに対処する方法として、リンク元(Referer)を参照します。 通常、HTMLファイルに画像ファイルへのパスが、<img src="hoge.jpg" width=100 height=80>などとあった場合、hoge.jpgのRefererは、そのHTMLファイルになります。これを利用します。
この正規のHTMLファイル以外のURLがRefererになっているならば、OKですが、第3者のサーバがRefererになっていれば、アクセスを拒否します。したがって、画像が表示されません。不法行為を働くものを止めさせるのが無理であれば、直リンクしても無駄なようにします。画像が表示されなければ、相手もHTMLを書き換え、直リンクを止めるかもしれません。(直リンクをやめ、画像を第三者のサーバにアップされ、リンクされたらどうなるかという問題もありますが、その場合は、そもそも画像を盗まれないように、いわゆる"右クリック禁止"処理が必要になります。右クリック禁止については、私が以前まとめた「HTMLソースを隠す方法:右クリックを禁止する(カスタマイズメニューの表示)を参照してください。」)
話が少し逸れましたが、直リンクを防ぐには、Refererをどのように取得するかが問題になってきます。CGI(perl)やPHPファイルならば、プログラム中で環境変数を取得することは簡単です。でも、画像ファイルに対してはどのようにRefererを取得するかといいますと、このホームページのテーマである.htaccessで可能なのです。
order deny,allow deny from all allow from env=ref_ok そして、前章の「ホストアドレスによるアクセス制限」の項目で見ましたように、最初に全部deny(拒否)した後に、一部だけを許可するのですが、ここで、「env=ref_ok」とあります。環境変数からref_okがsetされていたらという許可するという意味になります。 ここで、注意してもらいたいのは、一行目で、例えば、「SetEnvIf Referer "www.shtml.jp" ref_ok」などと書いてしまうと、とにかくRefererに「.shtml.jp」が含まれていればOKになってしまうのですから、不法行為を行うものは、RefererとなるURLを変えて、ディレクトリー名に「www.shtml.jp」を含む形で作成するかもしれないということです。不用意に短くしすぎると「穴」ができます。
また、ユーザーがNorton Internet SecurityやNorton Personal Firewall を利用している場合、デフォルトではRefererを送信しないように設定されるため、Refererのチェックを行っている場合、そのユーザーがアクセスしたとき、画像などが一切表示されない現象が起こります。悪意がないにもかかわらずです。
●(参照)Symentec: 参照元(リファラ)情報が遮断されてホームページが表示されない場合の対処方法 このように、Refererのチェックは善意の第三者があなたのサイトを楽しむのを妨害することになるかもしれません。このことは予め考慮すべきです。 また、それ以上に知っておくべきなのは、Refererは偽装が可能だということです。そこまでして直リンクする意味はないと思いますが、理論的には可能です。とは言っても、Refererをチェックし、別途「Norton Internet Securityをご利用のユーザー様へ」とアナウンスを出しているサイトも増えてきました。Refererによるアクセス制限で、善意の第三者を混乱させないような仕組みを作るのであれば、Refererチェックがセキュリティ上有効であり、強力であることは否定できません。 Refererチェックは直リンク防止以外にも、例えば、想定しているサイト外からのCGIの起動を防止する上でも、よく使います。例えば、フォームを使ったメール送信プログラムが第三者によって利用されると問題ですので、このような場合、Refererチェックが有効になってきます。また、Refererチェックは、連続投稿ソフトなどを使った掲示板の「荒らし」行為にも、"いくぶん"有効な場合があります。
※「ディレクティブ」とは「命令」の意味。
▼ Allowディレクティブ、Denyディレクティブ、Orderディレクティブ
▼ SetEnvIfディレクティブ 次のページでは、「.htaccessを利用した特定のユーザーエージェント(ブラウザ・ロボット)からのアクセス制限」を考えます。ダウンロード支援ソフトを使った大量ダウンロードなどを拒否したり、お行儀の悪い検索エンジン用ロボットを拒否するために使います。 |
|