これは何?

mod_deny_deeplink.cはディープリンク(直リンク)を防止する機能をApacheに組み込むためのモジュールです。簡単な設定で堅牢にディープリンクを防止することができます。

どのようにディープリンクを防ぐ?

ディープリンクを防止したいディレクトリには、所定のHTTP Cookieをもったクライアントのみをアクセスさせる実装をしています。通常そのHTTP Cookieは上位のインデックスがあるディレクトリにアクセスしたとき発行されます。

Cookieを受け付けないブラウザでアクセスすると?

ディープリンクを禁止したディレクトリのコンテンツにアクセスすることはできません。

Cookieでは改ざんなどのいたずらができませんか?

mod_deny_deeplink.cが発行し要求するHTTP Cookieは HMAC + timeout という形式です。仮にtimeoutの時刻だけ送受信した場合は、改ざ んなどに対応することは不可能です。しかしtimeoutの値とその HMAC(Keyed-Hashing for Message Authentication)を一緒に発行 しているので、timeoutもしくはHMACのいずれかの値を改ざんし た場合には簡単にそれを検知することができます。

HMACってなに?

HMAC(Keyed-Hashing for Message Authentication)は秘密鍵を使用 して対象のメッセージの同一性を保証するためのいわゆるチェック サムです。HMACはMD5やSHA-1などのmessage digestアルゴリズムを 使用した高速で堅牢な改ざんチェック機構として利用できる広く一 般的なアルゴリズムです。mod_deny_deeplink.cではSHA-1をmessage digestアルゴリズムとして使用しています。HMACのアルゴリズムは RFC2104として公開され誰でも利用することができます。

mod_deny_deeplinkを組み込むとパフォーマンスが落ちませんか?

mod_deny_deeplinkはC言語で記述しApacheモジュールとして組み込 むので、起動のオーバーヘッドは殆どありません。またディープリ ンク検知のためにHMACを使用していますが、そこで使用するSHA-1 は十分に高速なアルゴリズムであるために、組み込んでいない場合 と比較しても殆ど差が生まれません。組み込んだ場合と組み込んで いない場合とでベンチマークを取ってみれば判ると思いますが、パ フォーマンスの差異は殆ど生じません。

mod_deny_deeplink.cのライセンスは?

BSD風のライセンスを採用しています。つまりディープリン ク拒否機能はmod_deny_deeplink.cを使用して実装していることを 表明しさえすれば、自由に修正して配付したり、クローズドな製品 に組み込んだり、mod_deny_deeplink.cそのものもしくはその一部 を使用したソフトウェアを販売して対価を得ることも可能です。 ただし商用ニュースサイトでは使用することができません。商用ニ ュースサイト向けの商用ライセンスやコンサルティングも別途提供 可能なので担当者までお問い合わせ下さい。

Apache Dev Info:

API Dictionary - v1.3
Style guide
libapreq
Apache API notes - v1.3
Apache API notes - v2.0
Apache Module Registry
Apache API C++ Cookbook
Easily write Apache module in C++
ViewCVS Apache 1.3
ViewCVS Apache 2.0
MODULE.JP

My Apache Module info:

mod_insert
mod_blosxom
mod_deny_deeplink
Copyright (C) 2003 Hiroyuki OYAMA. Japan. All rights reserved.