直リンク禁止とその実現方法(2)
(前回からの続き) さて、直リンク禁止の実現方法にはどんなものがあるのだろう。 会員管理機能を持つサイトでの実現方法は前回のケース3で既に話したとおりだが、 他のケースで考えられるいくつかの方法とそのメリットやデメリットを紹介しよう。
HTTPリクエストヘッダのRefererでチェックする方法
巷で使われているほとんどのブラウザには、 Webサーバにアクセスするときにそのリンク元URLもWebサーバに提示する機能がある。 それがHTTPリクエストヘッダのRefererである。
一般にはこれをアクセスログに残して分析し「昨日のリンク元の一覧」のような形で Webマスターが日々の参考にしていることが多いが、 やり方によってはこれを直リンクの抑止に応用できる。
自分のサイトが、http://www.example.com/ だとしよう。 ユーザーのブラウザがアクセスしてきた際そのRefererに 「http://www.example.com/******」といった文字列が含まれていない場合に 「それは他のサイトからの直リンクによって飛んできた」とみなし、 アクセスを拒否するという手法だ。
これはたとえばApacheであればmod_rewriteなどのモジュールの導入と
httpd.confなどの設定ファイルの調整だけで実現できるので、
よく採られている手法である。
レンタルサーバであってもmod_rewriteモジュールはたいてい導入済みのことが多い(たぶん)。
See: mod_rewriteで直リンクを禁止する (ITmedia.co.jp Linux Tips より)
ただしこの手法にはデメリットがある
- 自サイト上のリンクではなくメールマガジン上などに書かれたURLを クリックしてアクセスしようとした際も拒否してしまいかねない。 メール上のURLをクリックした場合は当然ながらまともなRefererは送信されないからだ。 あるいはもしユーザーがYahoo!メールのようないわゆるWebメールサービスを使っていた場合、 RefererはそのWebメールのサイトになってしまう。以上を踏まえて設定をかなり工夫するか、 メールという媒体からのURL認知を許さないという無茶なポリシーにするか、 あるいはメールマガジン用には他のURLを用意してそこからリダイレクトさせるなどの措置が必要となる。
-
パーソナルファイアウォールとよばれる製品がそのパソコンにインストールされている場合、
ブラウザがWebサーバにアクセスする際にRefererを自動的に削除してしまうことがある。
これは、Refererという情報(=ユーザーがどんなサイトを見ていたか)も、
保護されるべきプライバシーのひとつである、という設計思想によるものだ。
有名なのはノートンインターネットセキュリティという製品だ。
ウィルス対策ソフトと合わせてPCにプリインストールされている場合が多い。
Norton Internet Security 2004 または Norton Personal Firewall 2004 の初期設定では、どの Web サイトから移動してきたかという参照元 (リファラ) 情報を遮断するように設定されています。 しかし 特定のWeb サイトでは、正しくサイトを表示するために参照元情報が必要な場合があります。
しかし初心者がこの説明を見て自分のPCを適切に設定できるとは思えない。 そんな面倒なことをするくらいなら、そのサイト自体を二度と見に来ないだけだ。
(参照元 (リファラ) が遮断され、 Web サイトが正しく表示されない (Norton Internet Security 2004/Norton Personal Firewall 2004) より)
Webサーバに特殊なソフトを入れる方法
こんな便利そうなApacheモジュールを作っている人もいる。
mod_deny_deeplink.cしかし、これを自身のサーバで使っているApacheに組み込むには ある程度の慣れた技術力が必要だし、 よくある共有ホスティング型レンタルサーバを使っている場合には そのApacheにモジュール追加するようなこと自体がおそらく許可されないだろう。
ディープリンクを防止したいディレクトリには、 所定のHTTP Cookieをもったクライアントのみを アクセスさせる実装をしています。 通常そのHTTP Cookieは上位のインデックスがあるディレクトリに アクセスしたとき発行されます。
また、この方法をとった場合もやはり、 メール上に書かれたURLをクリックした場合には Cookieを発行するタイミングが無いままアクセスされてしまうため、 Refererを使った場合と同じ問題とその対処が必要となる。
このように、直リンク禁止の方法はいくつかあるが、 いずれもデメリットも大きく不完全さが否めない。 コレといった包括的な解決策は無いのだ。
ただし前回のケース3のような場合であれば話は若干変わる。 つまり、ポリシー的にもシステム的にもある程度完成された 会員管理/認証機能を備えた会員制Webサイトであれば、 「会員にしか見せない」という意味での直リンク禁止は可能だし必要だろう。
これはあくまで筆者の個人的意見だが、一般的なWebサイトにおいては、 直リンク禁止などというWebの前提に矛盾することを考えて 不完全な方法を模索しつづけるくらいなら、 もっと他にやることがあるんじゃないだろうか。 全てのサイトにおいてとは言わないが、 少なくとも世の中の9割がたのサイトについて言えると思う。

コメント
思う節があり、TrackBackさせていただきました。
最後の一文、120%同意します。
方法など、色々と参考になりました。
ありがとうございました。
Posted by ja_guar at 2004年8月20日
コメントする
(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)